将事件绑定到++运算符

时间:2013-10-30 19:43:51

标签: javascript

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

var a = 0;

// if this variable gets incremented ++ to 1, I want to trigger an event. 
// how can I create listener for it? 
谷歌没有帮助。

1 个答案:

答案 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采用的解决方案)