1 javascript inheritance prototype ecmascript-6
我试图将类C添加到B类的原型链中
class A {
  constructor() {
    this.a = 'a';
  }
}
class B extends A {
  constructor() {
    super();
    this.b = 'b';
  }
}
class C extends A {
  constructor() {
    super();
    this.c = 'c';
  }
}
Object.setPrototypeOf(B.prototype, C.prototype);
var a = new A();
var b = new B();
console.log(b instanceof C);
console.log(b instanceof A);
console.log(b.c);代码的问题是super()在类B的构造函数中调用不会调用类C的构造函数,因此属性c不会被添加到对象中.我在这做错了什么?
super 在构造函数中是基于类原型(而不是类原型属性的原型):
 Object.setPrototypeOf(B.prototype, C.prototype);
 Object.setPrototypeOf(B, C);
这样你也可以获得适当的静态方法继承.