绑定优先级从上到下降低
-
构造函数|箭头函数
-
显式绑定(
call apply bind)- 传入的绑定对象是非对象的话走 默认绑定 逻辑
-
隐式绑定(
obj.fn()) -
默认绑定(
globalThis,严格模式下是undefined)
严格模式
严格模式下 默认绑定 的this将是undefined
使用场景
- 全局环境:
this === globalThis - Node 文件模块:
this === module.exports - 构造函数:
this为当前new创建的实例 - 函数:
this为 默认绑定 结果 - 对象方法:
this为 隐式绑定 结果 - 箭头函数:
this为当前词法上下文class中方法的箭头函数相当于在构造函数中的this.a = () => {}怎样的声明,this指向当前实例,而非原型链- 如果词法环境的
this是动态的,箭头函数的this也会随着变化:如函数中声明箭头函数,此时箭头函数的this用于指向函数中的this,但函数中的this可以随调用方式而变化。