this指向

默认绑定

隐式绑定

隐式丢失

显式绑定 call apply bind (API调用的"上下文")

new 绑定

被忽略的 this

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

小结

如果要判断一个运行中的函数的this绑定,就需要找到这个函数的直接调用位置。找到之后就可以顺序应用下面这四条规则来判断 this 绑定对象

1,由 new 调用? 绑定到新创建的对象

2,由 call apply 或者 bind 调用?绑定到指定对象

3,由上下文对象调用?绑定到上下文对象

4,默认:在严格模式下绑定到 undefined,否则绑定到全局对象

ES6中箭头函数并不会使用四条标准的绑定规则,而是根据当前词法作用域来决定 this 具体来说,箭头函数会继承外层函数调用的 this 绑定 (无论this绑定到什么)

这其实和ES6之前代码的 self = this 机制一样

原文地址:https://www.cnblogs.com/jeff-zhu/p/13899496.html