js中常见的函数方法splice()、及call()、apply()、bind() 与字符串常用函数方法

1 splice()

splice 是数组的一个方法,使用这个方法会改变原来的数组结构,splice(index ,howmany , itemX);这个方法接受三个参数,我们在使用的时候可根据自己的情况传递一个参数,或两个参数,或者三个参数;

总结splice()这个方法就是可以删除数组中的项,也可以向数组中添加新的项
 

传递一个参数时 

    传递一个参数的时候表示从这个参数的位置开始一直截取到最后
    var arr = [2,4,6,7,8,9]; 
    console.log(arr);//[2,4,6,7,8,9]
    var n = arr.splice(2);//参数为2表示从索引下标为2的位置开始一直截取到数组的最后;


    console.log(n);//[6,7,8,9]//splice()返回的是截取到的数组
    console.log(arr);//[2,4]//原来的数组结构发生改变,为splice截取之后剩下的数组

传递两个参数时

    传递两个参数,第一个参数表示开始的位置,第二个参数表示要截取的个数;如果第二个参数为0,则表示不截取,返回的空数组,原来的数组不变
    var arr = [2,4,6,7,8,9]; 
    console.log(arr);//[2,4,6,7,8,9]
    var n = arr.splice(2,3);//表示从下标位置为2开始截取3个数


    console.log(n);//[6, 7, 8]
    console.log(arr);//[2,4,9]

传递三个参数时

    var arr = [2,4,6,7,8,9]; 
    console.log(arr);//[2,4,6,7,8,9]
    var n = arr.splice(2,0,5);//表示在下标为2的位置,截取0个数组,在下标为2的位置添加一个新项


    console.log(n);//[]
    console.log(arr);//[2, 4, 5, 6, 7, 8, 9]

    当第二个参数不为0的时候(添加新值)

    var arr = [2,4,6,7,8,9]; 
    console.log(arr);//[2,4,6,7,8,9]
    var n = arr.splice(2,3,5);//表示从下标为2的位置开始,删除3个项,在下标为2的位置添加一个数字为5的新项


    console.log(n);//[6, 7, 8]
    console.log(arr);//[2, 4, 5, 9]

2 call()、apply()、bind()都是用于改变this指向的方法,不同点传参方式不太相同以及返回不同

call( ) 是接收一个及其以上的参数,第一个参数表示this要指向的对象,其余参数表示调用函数需要传入的参数,返回调用函数的返回结果,属于立即执行函数;
apply( ) 是接收两个参数,第一个参数表示this要指向的对象,第二参数表示调用函数需要传入的参数所组成的数组,返回调用函数的返回结果,属于立即执行函数;
bind( ) 是接收一个及其以上的参数,和call()一致,但是其返回是一个函数,而不是调用函数的返回结果
 

//此处声明若用let,则第一个调用函数输出undefined
//因为此处let声明的变量虽然也是全局变量但其不会成为全局对象window的属性,故say()直接调用时为undefined
var word = "我是window";
function say(params1,params2){
    console.log(params1+" "+params2+","+this.word)
}
let obj = { word: "我是obj"}
let newObj= {word: "我是newObj"}

let Obj1= {word: "我是newObj1"}

let Obj2= { word: "我是newObj2" }


say("Hi","friend")    //Hi friend,我是我是window //let声明 则输出:Hi friend,undefined
say.call(obj,"Hi","friend")   //Hi friend,我是obj
say.apply(newObj,["Hi","friend"])   //Hi friend,我是newObj

let newFunc = say.bind(Obj1,"hello","friend"); newFunc() //hello friend,我是newObj1

newFunc() //hello friend,我是newObj1

say.bind(Obj2,"hello","friend")(); //hello friend,我是newObj2

call( )的应用

实现函数的继承

function Person(name){
    this.name = name;
    this.say = function(){
        console.log("我是"+this.name)
    }
}        
function Student(sno,name){
    this.sno = sno;
    //此this指Student
    //通过改变this指向,使Person里的this指向Student
    //从而实现使Student拥有Person里的name属性以及say方法,即实现继承
    Person.call(this,name)
}
//实例化Student
let studen1 = new Student("20220518001","小明");    
studen1.say(); //我是小明
console.log("姓名:"+studen1.name+",学号:"+studen1.sno); //姓名:小明,学号:20220518001

applay( )的应用

数组合并

let arr1 = [1,2,3,4,5];
let arr2 = [7,8,9];
Array.prototype.push.apply(arr1,arr2);
console.log(arr1) //[1, 2, 3, 4, 5, 7, 8, 9]

//也可使用es6...语法实现    
let newArr = [...arr1,...arr2];
console.log(newArr)

// 数组中的最大值

let arr = [9,2,13,15,5];    
let max = Math.max.apply(Math,arr);
console.log(max) //15

3.字符串常用函数

indexOf

返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1

var index1 = a.indexOf(“l”);  //index1 = 2

lastIndexOf
返回字符串中一个子串最后一处出现的索引(从右到左搜索),如果没有匹配项,返回 -1 
var index1 = lastIndexOf(‘l’);   //index1 = 3

charAt

返回指定位置的字符
var get_char = a.charAt(0);  //get_char = “h”

replace

替换字符串,第一个参数代表被替换的字符串,第二个参数代表替换的字符串
a.replace(“he”,“aa”)

substring
返回字符串的一个子串,传入参数是起始位置和结束位置
var sub_string2 = a.substring(1,4);       //sub_string2 = “ell”

substr
返回字符串的一个子串,传入参数是起始位置和长度
var sub_string1 = a.substr(1);           //sub_string1 = “ello”
var sub_string2 = a.substr(1,4);        //sub_string2 = “ello”

length
返回字符串的长度,所谓字符串的长度是指其包含的字符的个数

toLowerCase
将整个字符串转成小写字母。
var lower_string = a.toLowerCase();    //lower_string = “hello”

toUpperCase
将整个字符串转成大写字母。
var upper_string = a.toUpperCase();   //upper_string = “HELLO”
 

你可能感兴趣的:(javascript,前端,开发语言)