5个关键字: class
constructor
extends
super
static
。
class
class Foo {} 表明创建了一个名为 Foo 的函数,其与 function Foo有以下区别:
- class Foo 只能通过new 调用,而 function Foo 即可以new 调用,也可以直接调用。
- function Foo 是提升的,而class Foo 不是,因此,在实例化一个类之前,必须先声明它。
全局作用域中的 class Foo只创建了一个词法标识符 Foo,而function Foo还创建了一个同名的全局对象属性。
constructor
extends
class Child extends Father {}
委托而非继承在Child.prototype和Father.prototype之间建立[[Prototype]]委托链接。
这样Child的实例不但可以使用Child.prototyp对象上的方法,还可以像Father的实例一样使用Father.prototype对象上的方法。
- 在Child和Father之间也建立了[[Prototype]]委托链接。
super
class Child extends Father {}
super的作用根据其所处的位置不同而不同。