Как отследить изменения в объекте?
function OBJ(option) {
Object.assign(this, {
x: 16,
y: 32
}, option);
}
let obj = new OBJ();
obj.x = 64;
При создании объекта я создаю XML. При изменении значений объекта я хочу изменять эти данные и в XML. Как это лучше всего сделать?
obj.onchange = function() {
{ ... }
}
Как уже предложил JavaJunior можно использовать геттеры и сеттеры. Также можно воспользоваться Proxy. Что конкретно использовать Вам нужно решить самому исходя из Ваших задач и предпочтений.
var handler = {
get: function(target, name) {
console.log("GETTER [target: %o, name: %o, returns: %o]", target, name, target[name]);
return target[name];
},
set: function(target, name, value) {
console.log("SETTER [target: %o, name: %o, value: %o]", target, name, value);
if(name in target) {
target[name] = value;
return true;
}
return false;
}
};
var obj = {
a: 0
};
var p = new Proxy(obj, handler);
p.a;
p.a = 1;
p.a;
p.b;
Как вариант используй инкапсуляцию - переменные сделай локальными, добавь сеттеры с требуемой логикой и гетеры.
var handler = {
get: function(target, name) {
console.log("GETTER [target: %o, name: %o, returns: %o]", target, name, target[name]);
return target[name];
},
set: function(target, name, value) {
console.log("SETTER [target: %o, name: %o, value: %o]", target, name, value);
if(name in target) {
target[name] = value;
return true;
}
return false;
}
}
function OBJ(option) {
Object.assign(this, {
x: 16,
y: 32
}, option);
return new Proxy(this, handler);
}
let obj = new OBJ();
obj.x;
obj.x = 64;
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости