bind、call、apply
1 |
|
this指向判定
需要找到这个函数的直接调用位置,找到之后就可以根据下面的规则来判定:
- 由new调用?绑定到新创建的对象
- 由call或者apply(或者bind)调用?绑定到指定的对象
- 由上下文对象调用?绑定到那个上下文对象
- 默认:严格模式下绑定到undefined,否则绑定到全局对象
有些调用可能在无意中使用默认绑定规则。如果想更安全地忽略this绑定,可以使用一个DMZ对象
1 |
|
箭头函数不会使用上述四条规则,而是会继承外层函数调用的this绑定,且不能被修改
bind、call、apply
https://blog-theta-ten.vercel.app/2021/06/11/bind、call、apply/