是否可以在多个类别之间共享数据?
我想知道是否有可能在一个类的一个实例中更改数据,以便它会导致在OOP方法中第二个类中的数据更改?
我的意思是
class Data {
constructor() { this.data = 5 }
}
class First extends Data {
constructor() { super() }
changeData(_data) { this.data = _data }
}
class Second extends Data {
constructor() { super() }
changeData(_data) { this.data = _data }
}
const first = new First()
const second = new Second()
first.changeData(7)
console.log(first.data)
console.log(second.data) // I want 7 here as well
或者只是在OOP中的类之间共享数据的任何解决方案?
回答如下:可以通过添加手动指定用于存储其成员的对象的功能来解决此问题。
在此示例中,first
和second
具有链接存储,third
和fourth
具有链接存储,这与first
和second
所使用的存储区不同。
class Data {
constructor(storage) {
this.storage = storage;
this.storage.data = 5
}
}
class First extends Data {
constructor(storage) { super(storage) }
changeData(_data) { this.storage.data = _data }
}
class Second extends Data {
constructor(storage) { super(storage) }
changeData(_data) { this.storage.data = _data }
}
storage = {};
const first = new First(storage)
const second = new Second(storage)
storageB = {};
const third = new First(storageB)
const fourth = new Second(storageB)
first.changeData(7)
third.changeData(21)
console.log(first.storage.data) // 7
console.log(second.storage.data) // 7
console.log(third.storage.data) // 21
console.log(fourth.storage.data) // 21
是否可以在多个类别之间共享数据?
我想知道是否有可能在一个类的一个实例中更改数据,以便它会导致在OOP方法中第二个类中的数据更改?
我的意思是
class Data {
constructor() { this.data = 5 }
}
class First extends Data {
constructor() { super() }
changeData(_data) { this.data = _data }
}
class Second extends Data {
constructor() { super() }
changeData(_data) { this.data = _data }
}
const first = new First()
const second = new Second()
first.changeData(7)
console.log(first.data)
console.log(second.data) // I want 7 here as well
或者只是在OOP中的类之间共享数据的任何解决方案?
回答如下:可以通过添加手动指定用于存储其成员的对象的功能来解决此问题。
在此示例中,first
和second
具有链接存储,third
和fourth
具有链接存储,这与first
和second
所使用的存储区不同。
class Data {
constructor(storage) {
this.storage = storage;
this.storage.data = 5
}
}
class First extends Data {
constructor(storage) { super(storage) }
changeData(_data) { this.storage.data = _data }
}
class Second extends Data {
constructor(storage) { super(storage) }
changeData(_data) { this.storage.data = _data }
}
storage = {};
const first = new First(storage)
const second = new Second(storage)
storageB = {};
const third = new First(storageB)
const fourth = new Second(storageB)
first.changeData(7)
third.changeData(21)
console.log(first.storage.data) // 7
console.log(second.storage.data) // 7
console.log(third.storage.data) // 21
console.log(fourth.storage.data) // 21