【发布时间】:2020-11-20 05:36:33
【问题描述】:
假设你有这个类:
class Foo {
constructor() {
this.count = 0
}
increaseCountEventually() {
setTimeout(() => {
this.count += 1
}, Math.floor(Math.random() * 1000))
}
}
然后你创建这个类的一个实例:
const foo = new Foo()
然后调用increaseCountEventually 方法,该方法将在某个随机时间点增加其属性this.count 的值:
foo.increaseCountEventually()
因此,在几毫秒内计数将增加 1。有没有技巧可以监听 foo 实例的 count 属性的变化?类似于事件侦听器,其中事件将是 count 属性的更改。像这样的东西(伪代码):
// A bit like DOM events
foo.addEventListener('property count changes', () => console.log('it changed!'))
// Or, in other terms:
foo.listenForCountChange(() => console.log('it changed!')
我可以使用setInterval 并每隔毫秒左右检查一下count 是否发生了变化,但我正在寻找一种更有效的方法。我读过有关使用“代理”的信息,但不确定它是如何工作的。
【问题讨论】:
标签: javascript oop object dom-events prototype-programming