javascript - ES6子类继承属性

标签 javascript inheritance prototype es6-class

我有一个父类 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"

最佳答案

bc 是完全不同的对象。虽然它们都派生自 A(这意味着它们继承行为,而不是数据),但它们是单独的实例,因此具有单独的实例数据。因此,它们每个对象都有自己的部分,即 A。当您更改 bA 部分时,不会影响 cA 部分。

如果您想要由所有实例共享的单个值,也许您想要使用某个类的静态属性,或者您可能想要 bc 在其实例数据中引用同一对象,因此当一个对象更改该对象时,另一个将看到相同的更改(因为它们都引用同一对象)。

关于javascript - ES6子类继承属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52457604/

相关文章:

javascript - Loopback如何设置嵌套关系

javascript - Highcharts y 轴上限未被遵守

c++ - 理解 C++ 指向父类/基类的指针

javascript - 创建后分配对象原型(prototype)

javascript - 尝试访问原型(prototype)方法中的成员变量

javascript - 移除 Marionette EventAggregator : really necessary to prevent leaks?

javascript - 使用 Javascript 函数更改 CSS 样式

C++ 接口(interface)和继承

Javascript 区分组合与继承

javascript - Framer.js 工作室 PSD