关于this

this使用一种更优雅的方式来隐式“传递”一个对象的引用

1.this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。
2.函数在执行过程中如何绑定this
a.默认绑定:
不被任何函数引用进行调用(全局对象)=》严格模式this会绑定到undefined
b.隐式绑定:
调用位置是否有上下文对象(缺点:隐式丢失)
c.显式绑定:

foo.call(this,2,3);//此处‘this’指显式绑定的函数对象
  • call() apply()
    它们第一个参数是一个对象,是给this准备的,接着在调用函数时将其绑定到this,因为可以直接指定this的绑定对象,因此称为显式绑定

如果把undefined或者null作为this的绑定对象传入call、apply或者bind,这些值在调用时会被忽略,实际应用的是默认绑定规则

优先级
1.new调用?绑定到新创建的对象
2.由call,apply(或者bind)调用?绑定到指定的对象
3.由上下文对象调用?绑定到上下文对象
4.默认:在严格模式下绑定到undefined,否则绑定到全局对象

  • ES6中的箭头函数并不使用以上四条标准的绑定规则,而是根据当前的词法作用域来决定‘this’。(箭头函数会继承外层函数的this绑定)

总结来自:你不知道的Javascript(上卷)

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

相关阅读更多精彩内容

友情链接更多精彩内容