Можно ли прослушивать изменения свойств без использования Proxy
и setInterval
?
Для обычных объектов вы можете использовать функцию ниже, но она работает для всех существующих свойств, но не работает для любых свойств, которые могут быть добавлены после переноса.
function wrap(obj) {
var target = {};
Object.keys(obj).forEach(function(key) {
target[key] = obj[key];
Object.defineProperty(obj, key, {
get: function() {
console.log("Get");
return target[key];
},
set: function(newValue) {
console.log("Set");
target[key] = newValue;
}
});
});
}
var obj = {
a: 2,
b: 3
};
wrap(obj);
obj.a; // Get
obj.a = 2; // Set
obj.b; // Get
obj.b = 2; // Set
obj.c = 2; // Nothing
obj.c; // Nothing