this的指向判定方法(规则)

213 阅读1分钟

为执行中的函数判定 this 绑定需要找到这个函数的直接调用点。找到之后,四种规则将会以这种优先顺序施用于调用点:

new绑定--------通过 new 调用?-------------this指向新构建的对象。

显式绑定--------通过 call 或 apply(或bind)调用?---------使用指定的对象。(例外:当call/apply/bind方法的第一个参数是null或者undefined时,依照默认绑定判断)

隐式绑定--------通过持有调用的环境对象调用?-----------使用那个环境对象。(隐式丢失/间接引用时依照默认绑定判断)

默认绑定--------在当前全局作用域下调用--------strict mode 下是 undefined,否则就是全局对象。

[参考]github.com/CuiFi/You-D…