call、apply
首先它们都是用来改变函数内部的this指向,call和appley唯一不同的就是传入的参数不同。
-
call 的用法要说出第一个参数是 this,后面的参数是 arguments 或其他参数
-
apply 的用法要说出第二个参数必须是数组,内含所有其他参数
obj1={
sum:0
}
fn(a,b){
this.sum = a+b;
}
fn.call(obj1,2,3);
obj1.sum //5
fn.apply(obj1,[1,10]);
obj1.sum //11
bind
bind用于将函数中的this绑定为某个对象
fn1 =fn.bind(obj1); // bind 在 绑定时也可以传参
fn1(2,3)
obj1.sum //5
fn.bind(x,y,z) 不会执行 fn,而是会返回一个新的函数 新的函数执行时,会调用 fn,调用形式为 fn.call(x, y, z),其中 x 是 this,y 和z 是其他参数