Насколько я понимаю, вы хотите onChange на свойства объекта JavaScript. Ответ - нет, насколько я знаю, его не существует.
Но вы можете сделать функцию установки следующим образом (в качестве доказательства концепции):
var element = {};
element.setProperty = function(property, value) {
if (typeof(element.onChange) === 'function') {
element.onChange(property, element[property], value);
}
element[property] = value;
};
element.onChange = function(property, oldValue, newValue) {
alert(property + ' changed from ' + oldValue + ' to ' + newValue);
};
element.setProperty('something', 'Hello world!');
теперь вы получаете окно с предупреждением «что-то изменено с неопределенного на Hello World!». И (element.something === 'Hello World!')
вернет true
.
если вы сейчас позвоните:
element.setProperty('something', 'Goodbye world!');
вы получаете окно с предупреждением «что-то изменилось из Hello World! в мир прощай! ».
Конечно, вы должны установить свойство только через метод setProperty
во всем вашем коде, если вы хотите захватить это событие!
Edit:
В будущем вы сможете использовать Object.observe () .
Редактировать 2:
Теперь есть также прокси .