理解 es6 class 中的 super
super 关键字用于访问和调用一个对象的父对象上的函数。
class
ES6 的 class
并没有为 JavaScript 引入新的面向对象的继承模型,实质上是 JavaScript 现有的基于原型继承的语法糖。
1 | // ES6 |
等同于:
1 | // ES5 |
constructor 方法是一个特殊的方法,这种方法用于创建和初始化一个由 class 创建的对象。一个类只能拥有一个名为 “constructor”的特殊方法。如果类包含多个 constructor 的方法时会报错,如果没有显示定义 constructor 方法,会默认添加一个。
一般 constructor 方法返回实例对象 this ,但是也可以指定 constructor 方法返回一个全新的对象,让返回的实例对象不是该类的实例。
super关键字
super 关键字有两种用法,下面的是 MDN 上给出的语法结构:
1 | super([arguments]); |
调用 父对象/父类 的构造函数
1 | class B extends A { |
注意:
- 使用了 extends 关键字并指定了 constructor 函数时,必须执行一次
super()
- 此时的 super 作为
函数
使用; - 必须写在子类(B)的 constructor 之内;
- 必须写在 this 之前.
调用 父对象/父类 上的方法
1 | class A { |
注意:
- 此时 super 作为
对象
使用;