将事件绑定到 ++ 运算符

Bind event to ++ operator

本文关键字:运算符 绑定 事件      更新时间:2023-09-26

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

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

谷歌没有提供帮助。

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

但是,如果值位于对象中,则可以使用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)