javascript es6 类原型链修改
2018-08-28
174
我试图将类 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 不会添加到对象中。我在这里做错了什么?
1个回答
构造函数中的
super
基于类的原型(而不是类的原型属性的原型):
Object.setPrototypeOf(B.prototype, C.prototype);
Object.setPrototypeOf(B, C);
这样您还可以获得正确的静态方法继承。
Jonas Wilms
2018-08-28