apply、call、bind方法调用

时间:2021-09-21 22:10:19

---恢复内容开始---

首先这三个方法的作用都是用来改变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函数是返回函数,需要调用而不是立即执行。

 

---恢复内容结束---