美文网首页JavaScript
call,bind,apply改变this的指向

call,bind,apply改变this的指向

作者: 付出的前端路 | 来源:发表于2018-07-27 16:25 被阅读0次
var person = {
  name: "axuebin",
  age: 25
};
function say(job){
  console.log(this.name+":"+this.age+" "+job);
}
say.call(person,"FE"); // axuebin:25 FE
say.apply(person,["FE"]); // axuebin:25 FE
var sayPerson = say.bind(person,"FE");
sayPerson(); // axuebin:25 FE

对于对象person而言,并没有say这样一个方法,通过call/apply/bind就可以将外部的say方法用于这个对象中,其实就是将say内部的this指向person这个对象。
可以看出,bind会创建一个新函数(称之为绑定函数),原函数的一个拷贝,也就是说不会像call和apply那样立即执行。

总结

三者都是用来改变函数的this指向
三者的第一个参数都是this指向的对象
bind是返回一个绑定函数可稍后执行,call、apply是立即调用
三者都可以给定参数传递
call给定参数需要将参数全部列出,apply给定参数数组

文章来源:axuebin

相关文章

网友评论

    本文标题:call,bind,apply改变this的指向

    本文链接:https://www.haomeiwen.com/subject/qzdgmftx.html