1. apply、call、bind三者都是用来改变函数的this对象的指向的;
2. apply、call、bind三者第一参数都是this要指向的对象,也就是想指定的上下文;
3. apply、call、bind三者都可以利用后续参数传参。
他们的区别是:当你希望改变上下文环境之后并非立即执行,而是回调执行执行的时候,使用bind()方法。而apply/call则会立即执行函数。
举个简单例子:
var obj = {
x: 81,
};
var foo = {
getX: function() {
return this.x;
}
}
console.log(foo.getX.bind(obj)()); //81
console.log(foo.getX.call(obj)); //81
console.log(foo.getX.apply(obj)); //81
1是返回对应的函数,便于以后调用;
2&3是立即调用