我想在变量递增时触发事件。那可能吗?
var a = 0;
// if this variable gets incremented ++ to 1, I want to trigger an event.
// how can I create listener for it?
谷歌没有帮助。
答案 0 :(得分:1)
就像你的例子一样,这是不可能的。
但是,如果值在对象中,您可以使用setter
使用defineProperty
来了解值的更改时间: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采用的解决方案)