0

我想在变量增加时触发一个事件。那可能吗?

var a = 0;

// if this variable gets incremented ++ to 1, I want to trigger an event. 
// how can I create listener for it? 

谷歌没有帮助。

4

1 回答 1

1

直接像你的例子,这是不可能的。

但是,如果值在对象中,您可以使用setterusingdefineProperty来了解值何时更改: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 采用的解决方案)

于 2013-10-30T19:47:18.953 回答