const obj = { name: 'Boris', age: 5}
obj.name = 'Stepan',
то вызвалась функция const obj = {
a: 69,
b: 187,
c: 666,
};
const proxy = new Proxy(obj, {
set(target, key, val) {
console.log('свойство', key, 'изменило своё значение с', target[key], 'на', val);
target[key] = val;
return true;
},
});
const obj = { name: 'Boris', age: 5};
// переназначить свойство с геттерами и сеттерами
// ниже очччень сокращённый пример
Object.defineProperty(obj, "name", {
set(newName) {
console.log("Name changed to", newName);
}
});
// проверяем:
obj.name = "Toster"; // в консоль выведет "Name changed to Toster"
на деле нужно сохранить начальное значение, где-то хранить значение свойства name
, и добавить геттер. Т.к. вероятно, не единственное свойство захочется так подменить, лучше будет воспользоваться «оптовым» Object.defineProperties() или в цикле по свойствам объекта каждое сделать Object.defineProperty()