我正在尝试将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);
代码的问题在于,在类B的构造函数中进行的super()
调用不会调用类C的构造函数,因此不会将属性c添加到对象中。我在这里做什么错了?
答案 0 :(得分:5)
super
基于类原型(不是类prototype属性的原型):
Object.setPrototypeOf(B.prototype, C.prototype);
Object.setPrototypeOf(B, C);
这样,您还可以获得适当的静态方法继承。