我声明了一个变量,它通过选择框中的另一个事件获取它的值。由于有不同的事件可以更改变量(让我们将其命名为z
),因此我希望在变量发生变化时获得通知。
所以我的问题是:当变量发生变化时获得通知的最佳方法是什么?
z.change(function(){});
会抛出错误。
如果没有隐藏的输入字段或其他类似的帮助,有没有办法做到这一点?
答案 0 :(得分:2)
这不太可能,但是有些浏览器支持getter和setter,并且有了它们,你可以实现在值为偶数时调用外部函数的东西。如果你想在所有浏览器中使用它,那么你可以采用老式的方式:
var Item = function (val) {
this._val = val;
}
Item.Prototype.setValue = function (val) {
this._val = val;
// call external function here!
}
Item.Prototype.getValue = function () {
return this._val;
}
然后始终记住只能通过这些功能访问该属性。
答案 1 :(得分:0)
你应该对http://plugins.jquery.com/project/watch感兴趣,它不像SpiderMonkey的方法那么完整,但实际上有效。
答案 2 :(得分:0)
试试这个:
var book = {
_year: 2004,
edition: 1
};
Object.defineProperty(book, "year", {
get: function(){
return this._year;
},
set: function(newValue){
if (newValue > 2004) {
this._year = newValue;
this.edition += newValue - 2004;
}
}
});
book.year = 2005;
alert(book.edition);
我用这个方法写了一个双向模型视图绑定jquery插件jQueryMV https://github.com/gonnavis/jQueryMV。