是否可以在多个类别之间共享数据?

时间:2019-10-06 18:15:55

标签: javascript node.js class

我想知道是否可以在一个类的一个实例中更改数据,从而导致在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中的类之间共享数据的任何解决方案?

3 个答案:

答案 0 :(得分:1)

如果您使用的是类,请检出静态标志(在实例之间共享内存),如果您可以运行,则只需跟踪作用域

答案 1 :(得分:0)

更新 我想我已经找到了解决问题的方法

const data = {
    name: 'John'
}

class First {
    constructor(data) { this.data = data }
    changeData() { this.data.age = 12 }
}

class Second {
    constructor(data) { this.data = data }
}


const first = new First(data)
const second = new Second(data)

console.log(first.data)
console.log(second.data)

first.changeData()

console.log(first.data)
console.log(second.data)
console.log(data)

答案 2 :(得分:0)

可以通过添加手动指定用于存储其成员的对象的功能来解决此问题。

在此示例中,firstsecond具有链接存储,thirdfourth具有链接存储,这与first和{{1 }}。

second