类似于绑定事件,而是更改变量。是通过为每个变量创建一个set()函数来促进这一点的唯一方法,还是可以将一个监听器绑定到变量?
我发现自己在几个函数中围绕变量编写if语句,以检查它们的状态。我想在变量发生变化时触发函数。
(或者这是一个坏主意......)
答案 0 :(得分:2)
你可以使用这样的setter:http://jsfiddle.net/DeyCP/1/。
var obj = (function(func) {
var variable;
return {
get something() {
return variable;
},
set something(value) {
variable = value;
func();
}
};
})(function() {
alert(123);
});
然后,
obj.something = 'foo'; // alerts 123
obj.something; // returns foo
答案 1 :(得分:1)
您可以使用watch
中的Object.prototype
功能。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/watch
有关详细信息,请参阅此answer。
答案 2 :(得分:1)
在许多情况下,这是可能的,也是可行的选择。正如@John指出的那样,您可以watch
和unwatch
JavaScript中对象的属性。但是,这仅适用于Firefox。相反,我建议你使用getter和setter来实现你想要的结果@pimvdb指出。但请注意,这两种替代方法仅适用于对象的属性(如果将它们视为属性,则为全局变量)。你无法在局部变量上获得相同的结果。
答案 3 :(得分:0)
我怀疑你想要的变量无法做到。相反,您可以通过getter / setter或属性与对象成员一起完成。这些概念在面向对象编程中非常普遍。以下是一些提示: