上下文调用模式

 改变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指向)
 
 
posted @ 2021-01-14 19:48  技术活当赏  阅读(73)  评论(0)    收藏  举报