let name = '小李', age = 20;
let obj = {
name: '小张',
age: 22,
myFun: function () {
console.log(this);
/*
call、apply、bind 指向相同,结果相同
bind未自调用返回
ƒ (){
console.log(this);
console.log(this.name + 'age:' + this.age);
}
*/
console.log(this.name + 'age:' + this.age);
},
func: function (a, b) {
console.log(this);
/*
call ==> String {''}
apply ==> {name: '小王', age: 25}
bind ==> window对象
*/
console.log(a + '参数' + b);
/* call、apply、bind ==> 小王11参数222 */
}
}
let db = {
name: '小王',
age: 25
}
基础用法
/* 修改this指向 */
obj.myFun.call(db);
obj.myFun.apply(db);
/* bind函数返回值为匿名函数,所以需要进行自调用 */
obj.myFun.bind(db)();
携参、修改this指向、扩充函数作用域
obj.func.call('','小王11', '222'); // 不推荐使用''指向
obj.func.apply(db, ['小王11', '222']); // 指向db对象(自定义)
obj.func.bind(this, '小王11', '222')(); // 指向window对象
apply、bind、call自学习内容,如有不恰的地方请指出,谢谢