如何将变更事件处理程序附加到变量?

Tra*_*s J 10 javascript jquery

可能重复:
侦听JavaScript或jQuery中的变量

如何跟踪此变量是否已更改?

var ConditionalFlag = 0;
Run Code Online (Sandbox Code Playgroud)

我试过这个:

var ConditionalFlag = 0;
$(ConditionalFlag).change(function () {
    alert("Changed");
});
ConditionalFlag++;
Run Code Online (Sandbox Code Playgroud)

但无济于事.我考虑使用25ms计时器来检查这样的变化:

var ConditionalFlag = 0;
function CheckFlag() {
    if (ConditionalFlag > 0) {
        alert("Changed");
        clearInterval(check);
    }
}
var check = window.setInterval("CheckFlag()", 25);
ConditionalFlag++;
Run Code Online (Sandbox Code Playgroud)

然而,这似乎有点矫枉过正.有没有办法用jQuery或javascript将事件处理程序附加到此变量?

小智 10

如果它是全局变量,您可以在支持的环境中使用属性访问器...

window._conditional_flag = 0;
Object.defineProperty(window, "ConditionalFlag", {
    get: function() { return window._conditional_flag},
    set: function(v) { console.log("changed"); window._conditional_flag = v; }
});
Run Code Online (Sandbox Code Playgroud)

  • 我会假设这只适用于现代网络浏览器(所以不适用于IE). (2认同)

Roc*_*mat 5

当变量发生变化时,没有"事件"被触发.JavaScript无法正常工作.

这个变量什么时候改变?只需添加对函数的调用即可.