上下文调用模式
改变this的指向
function fn(){ console.log(this); } var obj = { name:"张三" } // 调用过程将函数中的this改变 fn.call(obj) //调用的过程中将this变成了obj
如果需要实参,从call方法的第二个参数开始传入实参
function fn(a,b){ console.log(a+b); console.log(this); } // 如果需要实参,从call方法的第二个参数开始传入实参 fn.call(obj,1,2)
apply - 调用函数
调用的时候改变this
fn.apply(obj)
如果需要实参,apply把所有实参作为一个数组,传入
fn.apply(obj,[1,2])
bind - 用来复制函数的
function fn(){ console.log(this); } // 复制过程中,能改变this的指向 var fun = fn.bind(obj) console.log(fun); fun()
总结:
call - 函数.call() - 调用函数
调用并改变函数的this - 函数.call(改变后的this指向)
如果函数需要实参,就从call的第二个参数开始传入实参
apply - 函数.apply() - 调用函数
调用并改变函数中的this - 函数.apply(改变后的this指向)
如果函数需要实参,把所有的实参作为一个数组,传入
bind - 函数.bind() - 复制函数
复制并改变函数中的this - 函数.bind(改变后的this指向)

浙公网安备 33010602011771号