Возможно ли иметь событие изменения в переменной javascript? - PullRequest
2 голосов
/ 29 сентября 2010

Я объявляю переменную, которая получает значение через другое событие из поля выбора.Поскольку существуют различные события, которые изменяют переменную (давайте назовем ее z), я хочу получать информацию, когда переменная изменяется.

Поэтому мой вопрос: каков наилучший способ получить информацию, когдапеременная меняется?z.change(function(){}); выдает ошибку.

Есть ли способы сделать это без скрытого поля ввода или других подобных помощников?

Ответы [ 3 ]

2 голосов
/ 29 сентября 2010

Это на самом деле невозможно, но некоторые браузеры поддерживают геттеры и сеттеры, и с их помощью вы можете реализовать нечто, называемое внешней функцией, когда значение выбирается.Если вы хотите, чтобы это работало во всех браузерах, то вы можете пойти по старинке:

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;
}

И затем всегда не забывайте получать доступ к свойству только через эти функции.

0 голосов
/ 17 июня 2015

попробуйте это:

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.

0 голосов
/ 29 сентября 2010

Вас должно заинтересовать http://plugins.jquery.com/project/watch, которое не так полно, как метод SpiderMonkey, но на самом деле работает.

...