ES2015(ES6)类的规则基本上可以归结为:
- 在子类构造函数中,
this
只有在super
被调用之前才能使用。 - ES6类构造函数必须
super
是子类,否则必须调用,否则它们必须显式返回某个对象以代替未初始化的对象。
这归结为ES2015规范的两个重要部分。
8.1.1.3.4节定义了决定
this功能的逻辑。类的重要部分是有可能
this处于一种
"uninitialized"状态,当处于这种状态时,尝试使用
this将引发异常。
节9.2.2,
[[Construct]],它定义的通过被称为功能的行为
new或
super。调用基类构造函数时,
this在的步骤#8进行了初始化
[[Construct]],但对于所有其他情况,
this都未初始化。在构造结束时,
GetThisBinding将调用,因此,如果
super尚未调用(因此初始化
this),或者未返回显式替换对象,则构造函数调用的最后一行将引发异常。



