Добрый день!
Есть функция, создающая proxy:
function watchObj(node, callback){
return new Proxy(node, {
set (target, name, value){
target[name] = value;
callback(name, value);
return true;
}
});
}
let div = document.createElement('div');
document.body.appendChild(div);
let cleverDiv = watchObj(div, function(prop, val){
console.log(prop, val);
});
При измении свойства самого объекта (innerHTML) все работает корректно:
cleverDiv.innerHTML = '<strong>HTML</strong><em>Changed</em>'; // в консоли innerHTML <strong>HTML</strong><em>Changed</em>
При измении свойства внутреннего объекта Style - ошибка:
cleverDiv.style.color = 'red'; // Uncaught TypeError: Illegal invocation
Понимаю, что теряется контекст, но не понимаю, как исправить. Помогите, пожалуйста