我想在变量增加时触发一个事件。那可能吗?
var a = 0;
// if this variable gets incremented ++ to 1, I want to trigger an event.
// how can I create listener for it?
谷歌没有帮助。
我想在变量增加时触发一个事件。那可能吗?
var a = 0;
// if this variable gets incremented ++ to 1, I want to trigger an event.
// how can I create listener for it?
谷歌没有帮助。
直接像你的例子,这是不可能的。
但是,如果值在对象中,您可以使用setter
usingdefineProperty
来了解值何时更改:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
最终,您可以使用Object.observe
http://updates.html5rocks.com/2012/11/Respond-to-change-with-Object-observe来监听对象的变化
支持旧版浏览器
注意认为这defineProperty
不适用于旧浏览器。
如果您需要支持旧的,您可以创建一个接口来更改对象值并在方法上执行您想要的操作(如myInt.increment()
)。(Backbone、Ember 等内部使用此模式)
或者您可以通过运行循环 ( setTimeout
) 并将新值与缓存的旧值进行比较来进行一些脏检查......(这是 Angular.js 采用的解决方案)