Я пытаюсь создать несколько экземпляров классов, которые имеют общий источник данных, в данном случае объект. К сожалению, я не могу заставить это работать без использования объекта в качестве глобальной переменной.
Так что мне интересно, есть ли более изощренное решение для следующего?
let amount = {
needed: 0,
}
class Store {
constructor(a) {
this.needed = a.needed;
}
addNeeded(x) {
amount.needed += x;
this.needed += x;
}
getNeeded() {
return {
amount: amount.needed,
store: this.needed
}
}
}
const test1 = new Store(amount);
const test2 = new Store(amount);
test1.addNeeded(5); // this.needed returns 5, amount.needed is now 5
console.log(test1.getNeeded(), amount.needed);
test2.addNeeded(10); // this.needed return 10, amount.needed is now 15
console.log(test2.getNeeded(), amount.needed);
Как видите, this.needed создаст копию amount.needed в своем собственном экземпляре, если я передам объект его конструктору. Я чувствую, что упускаю что-то очень элементарное, и здесь есть более элегантное решение.