Javascript ES6子类继承属性
我有一个父类a和另外两个扩展了a的类B和C。我正在尝试更改父类a中的config属性,该属性来自子类,例如B,并自动与其他子类共享,例如CJavascript ES6子类继承属性,javascript,inheritance,prototype,es6-class,Javascript,Inheritance,Prototype,Es6 Class,我有一个父类a和另外两个扩展了a的类B和C。我正在尝试更改父类a中的config属性,该属性来自子类,例如B,并自动与其他子类共享,例如C class A { constructor() { this.config = {}; } } class B extends A { constructor() { super(); } updateConfig() { this.config = "B"; } } 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
中的每一个都在其实例数据中引用同一对象,这样当一个对象更改时,另一个对象将看到相同的更改(因为它们都是指同一个对象)。b
和c
可能都是A
(通过继承),它们仍然是不同的对象(即,它们在实际数据方面不共享任何内容)。这些类相互继承并不意味着任何特定实例之间的关系。