---恢复内容开始---
首先这三个方法的作用都是用来改变this的值,而this的值一般有几种情况。
1、函数作为一个对象的一个方法来调用,此时this的值指向对象。
var a={ v:0; f:function(xx){ this.v=xx; } } a.f(1);
2、函数的正常调用,此时的this指向全局对象,一般来说是window对象。
function f(x){ this.x=xx;
} f(1);
3、正常函数,但是用new来调用函数,此时this的值指向新创建的对象。
function f(xx){ this.x=xx; } var b=new f(1);
而当我们使用apply/call/bind函数调用时改变this的值。
apply函数,第一个参数是改变之后的this的指向对象,第二个参数是传递的参数的数组,是立即执行的。
call函数,第一个参数是改变之后的this的指向对象,但是后来的参数是不定的,有多少个传多少个,必须明确额度传递每一个参数,也是立即执行的。
bind函数和call相似,第一个参数是this的指向对象,从第二个开始时接受的参数列表,但是bind函数是返回函数,需要调用而不是立即执行。
---恢复内容结束---