绑定优先级从上到下降低
-
构造函数|箭头函数
-
显式绑定(
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
可以随调用方式而变化。