【JS】this绑定四个规则

this绑定四个规则

zhongxia 2016-07-22 10:02:32

出处: you dont konw js 第三书

github : https://github.com/getify/You-Dont-Know-JS

  1. 函数是否在 new 中调用(nwe绑定)? 如果是的话, this 绑定的是新创建的对象.
var bar = new foo();
  1. 函数是否通过 call,apply (显示绑定) 或者硬绑定调用? 如果是的话, this绑定的是指定的对象
var bar = foo.call(obj,1,2,3);  //this 指向 obj
var bar = foo.apply(obj,[1,2,3])  //this 指向 obj 

call 和 apply 的区别是参数的区别, 传参的方式不一样, call 多个参数逗号隔开, apply 参数, 用数组包起来

  1. 函数是否在某个上下文对象中调用(隐式绑定)? 是的话, this绑定的是上下文那个对象
var bar = obj1.foo();  //this 指向 obj1
  1. 如果都不是的话, 使用默认绑定. 如果在严格模式下, this 就绑定到 undefined, 否则绑定到全局对象 window
var bar = foo(); // this指向 undefined 或者 window

对于正常的函数调用来说, 理解了这些只是, 你就可以明白 this 的绑定原理了. 但是凡事总有例外.

[待补充]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容