我有一个父类 A 和另外两个扩展 A 的类 B 和 C。我试图从子类(例如 B)更改父类 A 内的配置属性,并自动与其他子类共享,例如例子C?
class A {
constructor() {
this.config = {};
}
}
class B extends A {
constructor() {
super();
}
updateConfig() {
this.config = "B";
}
}
class C extends A {
constructor() {
super();
}
getConfig() {
console.log(this.config);
}
}
const b = new B();
const c = new C();
b.updateConfig();
c.getConfig(); // got {} expected "B"
最佳答案
b
和 c
是完全不同的对象。虽然它们都派生自 A
(这意味着它们继承行为,而不是数据),但它们是单独的实例,因此具有单独的实例数据。因此,它们每个对象都有自己的部分,即 A
。当您更改 b
的 A
部分时,不会影响 c
的 A
部分。
如果您想要由所有实例共享的单个值,也许您想要使用某个类的静态属性,或者您可能想要 b
和 c
在其实例数据中引用同一对象,因此当一个对象更改该对象时,另一个将看到相同的更改(因为它们都引用同一对象)。
关于javascript - ES6子类继承属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52457604/