call、apply、bind都是改变this指向的方法
1. call的用法
var A={
name:"张三",
T1:function(val){
console.log(this.name,val)
}
}
var B={
name:'李四',
}
A.T1.call(B,18);
//输出结果是 李四 18
//如果不加call,会把B里面的值作为实参输出 结果是 张三 {name:'李四'},
//后面的18因为没有对应的形参则不显示
2.apply的用法
var A={
name:"张三",
T1:function(val1,val2,val3){
console.log(this.name,val1,val2,val3)
}
}
var B={
name:'李四',
}
A.T1.apply(B,[2,3,4,5]);
//输出结果是李四 2 3 4
//与call 不同的是apply,后面跟是一个数组,数组里面的值对应一个形参,若没有则不显示
3.band的用法
var A={
ame:"张三",
T1:function(val){
console.log(this.name,val)
}
}
var B={
name:'李四',
}
A.T1.bind(B,19);
//并没有打印任何东西,我们用变量接收一下
var C= A.T1.bind(B,19);
C();
//打印出李四 19
//bind 的方法会先将函数中的this存储起来,再次调用的时候激活
A.T1.bind(B,19)();//这种写法也一样可以调用
以上是三种更改this指向的方法,欢迎补充或纠错