Learn-ES6-class-extends
1.简介 Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多 class Point { } class ColorPoint extends Point { } 上面代码,ColorPoint 继承了 Point,因为没有部署代码,所以两个类是完全一样的。 子类必须在 constructor 中调用 super 方法,否则会出错。因为子类没有自己的 this 对象,所以需要 super 方法继承父类的 this 对象。 class ColorPoint extends Point { constructor(x, y, color) { super(x, y) this.color = color; } } ES5 的继承,实质是先创造子类的实例对象this,然后再将父类的方法添加到this上面(Parent.apply(this))。ES6 的继承机制完全不同,实质是先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this。 作为子类的默认 constructor 方法 class ColorPoint extends Point { } class ColorPoint extends Point { constructor(...args) { super(...args) } 下面代码中,实例对象cp同时是ColorPoint和Point两个类的实例,这与 ES5 的行为完全一致。 let cp = new ColorPoint(25, 8, 'green'); cp instanceof ColorPoint // true cp instanceof Point // true 最后,父类的静态方法,也会被子类继承。...