修改this的指向

断了今生、忘了曾经 提交于 2019-12-01 10:23:20

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);

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!