我想在每次變量增加時觸發一個事件。那可能嗎?將事件綁定到++運算符
var a = 0;
// if this variable gets incremented ++ to 1, I want to trigger an event.
// how can I create listener for it?
Google沒有幫助。
我想在每次變量增加時觸發一個事件。那可能嗎?將事件綁定到++運算符
var a = 0;
// if this variable gets incremented ++ to 1, I want to trigger an event.
// how can I create listener for it?
Google沒有幫助。
直接喜歡你的例子,這是不可能的。
但是,如果該值是一個對象,你可以使用一個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)
原始類型不可能。只有在指定了另一個增量方法的情況下才可能使用這些對象。你想完成什麼? –
一個骯髒的,可怕的,不可靠和不可靠的方法是監視setTimeout循環中的變量 – xbonez
我想要一個私有函數在這個變量增量時自動觸發。 – amit