是否可以在javascript变量上进行更改事件?

时间:2010-09-29 08:32:52

标签: javascript jquery variables onchange

我声明了一个变量,它通过选择框中的另一个事件获取它的值。由于有不同的事件可以更改变量(让我们将其命名为z),因此我希望在变量发生变化时获得通知。

所以我的问题是:当变量发生变化时获得通知的最佳方法是什么? z.change(function(){});会抛出错误。

如果没有隐藏的输入字段或其他类似的帮助,有没有办法做到这一点?

3 个答案:

答案 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