This在不同情况下的指向
This所处的场景
使用this
的场景可大致分为下面几类:
- 普通函数调用:
this
指向全局对象 - class调用:
this
指向class
实例 - bind、call、apply调用:
this
指向传入的对象 - 作为对象方法:
this
指向对象实例 - 箭头函数
不同的场景this
的指向会发生变化,但有它们都有一个共同点,那就是**this
是在执行时才确定其最终指向,而不是在定义时确定**。这一点和自由变量的查找有很大不同。
箭头函数的this
- 箭头函数没有自己的
this
,它的this
在定义时继承于上级作用域 - 箭头函数的
this
不能被call、apply、bind
等函数改变 - 箭头函数没有
prototype
。综上它不能用作构造函数用new
操作符 - 箭头函数没有
arguments
对象 - 箭头函数不能用作
generator
函数