最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 10浏览 0评论

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

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

回答如下:

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

在此示例中,firstsecond具有链接存储,thirdfourth具有链接存储,这与firstsecond所使用的存储区不同。

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中的类之间共享数据的任何解决方案?

回答如下:

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

在此示例中,firstsecond具有链接存储,thirdfourth具有链接存储,这与firstsecond所使用的存储区不同。

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
发布评论

评论列表 (0)

  1. 暂无评论