Событие изменения свойства объекта

281
15 марта 2017, 19:13

Пытаюсь реализовать в объекте нечто наподобие события для реакции на изменение его свойства:

obj = {
    prop: -1,
    onChange: function() {},
    setProp: function(value) {
        this.prop = value;
        this.onChange;
    }
}

И далее, в основном коде скрипта:

function func() {
    код
}
...
obj.onChange = func;

Такой метод не работает. Думаю, я что-то делаю не так, с подобными событиями раньше не работал. Как это обычно делается?

Answer 1

this.onChange(); - чтобы вызвать, добавьте скобочки

Используйте один метод с разным числом параметров для get/set:

var obj = { 
    _prop: -1, 
    onChange: null, 
    prop: function() { 
        if (arguments.length == 0) 
            return this._prop; 
     
        this._prop = arguments[0]; 
        if (this.onChange) 
            this.onChange(); 
    } 
}; 
 
obj.onChange = function() { console.log("onChange handler"); } 
console.log(obj.prop()); 
obj.prop(3); 
console.log(obj.prop()); 
     
    

READ ALSO
Останавливается выполнение скриптпа

Останавливается выполнение скриптпа

Не знаю как по другому вопрос задатьПроблема такая:

214
Яндекс-конструктор форма

Яндекс-конструктор форма

Вопрос по форме "Точки продаж", это через яндекс конструктор реально сделать ?

216
Angular 2 и DOM

Angular 2 и DOM

Доброго времени суток!

378
Автоматический выбор значения в select

Автоматический выбор значения в select

Есть два селекта выбора стран"Откуда" и "куда"

438