修改this的指向

call

var a={
    name:'xuux',
    fn:function(a,b){
        console.log(a+b);//3
        console.log(this);//{name: "xuux", fn: ƒ}
    }
}
var b=a.fn;
b.call(a,1,2);//传入的参数要分别放入
console.log(b);//ƒ (a,b){console.log(a+b); console.log(this);}

apply

var a={
    name:'xuux',
    fn:function(a,b){
        console.log(a+b);//3
        console.log(this);//{name: "xuux", fn: ƒ}
    }
}
var b=a.fn;
b.apply(a,[1,2]);//传入的参数用数组存放
console.log(b);//ƒ (a,b){console.log(a+b); console.log(this);}

bind  返回的是一个修改后的函数。需要另外调用。

var a={
    name:'xuux',
    fn:function(a,b){
        console.log(a+b);//3
        console.log(this);//{name: "xuux", fn: ƒ}
    }
}
var b=a.fn;
var c=b.bind(a,1);//传入的参数按顺序赋值
c(2);

 

posted @ 2019-10-15 21:58  xuxuya~  阅读(221)  评论(0)    收藏  举报