this是函数在被用调用时发生的绑定,如果要找this的指向,就要是在哪里被调用了。
按以下查找顺序:
1.通过new调用构造函数的,绑定到新创建的对象。
2.通过call或apply(bind)等显式绑定的, 绑定到指定的对象。
3.通过对象属性调用(如a.b.c()),绑定到执行函数前一个.的对象。
4.如果以上都没有,非严格模式下默认为windows,在严格模式下默认为undefined。
还有一个特殊情况是es6内的箭头函数,它是继承外层函数的this绑定。
参考资料:
- 《你不知道的JavaScript》上卷
网友评论