1.applay、call、bind他们三个都能改变函数this的指向问题;
2.applay、call这两个方法的主动调用,bind返回的是改变this指向后的新函数;
3.传参的问题区别,call和bind都是直接传递参数,applay传递的是数组
call的用法:
function test(a,b) {
console.log(this) //默认情况下函数中的this指向的是Window对象
console.log(a,b) //a,b对应的是参数1和参数2
}
const obj= {
name:'zhangsan'
}
test.call(obj,'参数1','参数2') //直接调用函数并改变this的指向
appaly的用法:
function test(a,b) {
console.log(this) //默认情况下函数中的this指向的是Window对象
console.log(a,b) //a,b对应的是参数1和参数2
}
const obj= {
name:'zhangsan'
}
test.apply(obj,['参数1','参数2']) //直接调用函数并改变this的指向
bind的用法:
function test(a,b) {
console.log(this) //默认情况下函数中的this指向的是Window对象
console.log(a,b) //a,b对应的是参数1和参数2
}
const obj= {
name:'zhangsan'
}
var newFn = test.bind(obj,'参数1','参数2') ;
newFn()