Свойство наследования дочернего класса ES6 - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть родительский объект A и два других класса B и C, которые расширяют A. Я пытаюсь изменить свойство config внутри родительского класса A дочернего элемента, например 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"

1 Ответ

0 голосов
/ 22 сентября 2018

b и c - совершенно разные объекты.Хотя оба они происходят от A (что означает, что они наследуют поведение, а не данные), они являются отдельными экземплярами и, следовательно, имеют отдельные данные экземпляров.Таким образом, каждый из них имеет свой собственный раздел своего объекта, который является A.Когда вы изменяете A часть b, это не влияет на A часть c.

. Если вы хотите, чтобы одно значение было общим для всех экземпляров, возможно, вы захотитеиспользуйте статическое свойство одного из ваших классов или, возможно, вы хотите, чтобы каждый из b и c имел ссылку на один и тот же объект в своих данных экземпляра, поэтому, когда один изменяет этот объект, другой будет видеть то же самое изменение (потому чтоони оба ссылаются на один и тот же объект).

...