我想创建一个通用的远程类,其中多个设备连接到它。我知道它们不会从远程扩展,但不确定如何向所有它们发送电源关闭/打开命令。
我在想:
const tv = new TV()
tv.isOn // gives false
const light = new Light()
light.isOn // gives false
const xbox = new Xbox()
xbox.isOn // gives false
const remote = new Remote()
remote.on()
tv.isOn // gives true
light.isOn // gives true
xbox.isOn // gives true
那么现在如果你检查像TV这样的对象看它是否打开了它就会打开或者灯亮了等等
In my head
class TV extends Remote
听起来愚蠢。但是我想不出一种方法,只要调用远程类就会改变所有其他对象。我对编码相当陌生,所以任何帮助都会很感激
扩展远程没有帮助,因为您仍然有不同的实例(扩展一个类将只提供该类的方法,但不会与其他实例共享该类的状态)。
解决你的问题将会使on
(toggle
将是一个更好的名字之间切换了)函数接受一个依赖关系列表,将被更新(你还需要知道你想要的设备的实例打开/关闭因为你需要传递函数)。
切换功能可以根据你的需要否定以前的值this.isOn = !this.isOn
(现在你控制是否所有的都是开/关,通过传递boolean
,他们将所有的时间都在同步——除了当他们实例化不同的状态)。
class Device {
constructor(state = false) {
this.isOn = state;
}
toggleState(state) {
this.isOn = state;
}
}
class TV extends Device {}
class Xbox extends Device {}
class Light extends Device {}
class Remote {
toggle(state, devices = []) {
devices.forEach(device => {
device.toggleState(state);
})
}
}
const tv = new TV();
const xbox = new Xbox();
const light = new Light();
const remote = new Remote();
console.log(tv.isOn);
console.log(xbox.isOn);
console.log(light.isOn);
remote.toggle(true, [ tv, xbox, light ]);
console.log(tv.isOn);
console.log(xbox.isOn);
console.log(light.isOn);
这是你要找的吗?