Javascript的call,apply,bind

总结

  • 三者都是用来改变函数的this对象的指向的
  • 三者的第1个参数都是this要指向的对象,也就是想指定的上下文
  • 三者都可以利用后续参数传参
  • bind是返回函数,以便于稍后调用;apply,call则是立即调用。
  • call的调用方式:对象.call(this,arg1,arg2);
  • apply的调用方式:对象.apply(this,[arg1,arg2,arg3]);
  • func.bind(this); 多次bind无效,只会根据第一次bind的上下文(this)来执行函数

代码示例:

var a = {
    x : 'a',
    get:function(){
     var args = Array.prototype.slice.call(arguments);
     args.unshift(this.x);
     console.log.apply(console,args);
    }
}
var b = {
    x : 'b'
};
a.get(); // a
a.get.call(b); // b
a.get.apply(b,[1,2,3]); // b 1 2 3
a.get.call(b,1,2,3); // b 1 2 3
a.get.bind(b,1,2,3)(); // b 1 2 3
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容