ES6 child class 继承属性
ES6 child class inheritance property
我有一个 parent A 和另外两个扩展 A 的 classes B 和 C。我正在尝试更改 parent 中的配置 属性 class 来自 child 的 A,例如 B,并自动与其他 child 共享,例如 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
在它们的实例数据中引用同一个对象,这样当一个对象更改该对象时,另一个将看到相同的更改(因为它们都引用同一个对象)。
我有一个 parent A 和另外两个扩展 A 的 classes B 和 C。我正在尝试更改 parent 中的配置 属性 class 来自 child 的 A,例如 B,并自动与其他 child 共享,例如 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
在它们的实例数据中引用同一个对象,这样当一个对象更改该对象时,另一个将看到相同的更改(因为它们都引用同一个对象)。