1、call的用法
let obj = {
name:"Agwenbi",
age:25
}
function add(...args){
console.log(this);//obj对象
console.log(args);//参数1,2,3
}
/*
call用法解析
xxx.call(obj,1,2,3)
表示调用xxx函数,并将xxx函数里面的this指向call的第一个参数(这里是obj)
其余的call参数将作为xxx函数的参数进行传递
*/
add.call(obj,1,2,3);
2、apply的用法,与call的不同点就是参数的传递方式不一样
let obj = {
name:"Agwenbi",
age:25
}
function add(...args){
console.log(this);//输出obj对象
console.log(args);//输出[1,2,3]
}
/*
xxx.apply(obj,[1,2,3]);
表示调用xxx函数,并将xxx函数里面的this指向apply的第一个参数(这里是指obj)
apply中的剩余参数则是作为xxx函数的参数进行传递
*/
add.apply(obj,[1,2,3]);
3、bind的用法
let obj = {
name:"Agwenbi",
age:25
}
function add(...args){
console.log(this);//输出obj对象
console.log(args);//输出[1,2,3]
}
/*
let newXxx = xxx.bind(obj);
将xxx的函数内部中的this指向为obj,并返回一个新的函数newXxx
*/
let newAdd = add.bind(obj);//或者add.bind(obj)(1,2,3)
newAdd(1,2,3);