#javascript #proxy
Вопрос:
const scopeHandler = { set: function(obj, prop, value) { console.log(`${prop} changed from ${obj[prop]} to ${value}`); obj[prop] = value; return true; } }; const scopeProxy = new Proxy(window.app, scopeHandler);
Поэтому я пытаюсь обнаружить какие-либо изменения всякий app
раз, когда меняется какой-либо из его дочерних app.reports
элементов, но он ничего не регистрирует. Что я делаю не так?
Ответ №1:
Прокси-сервер будет отображаться только в том случае, если сам прокси-сервер является значением, которое «изменилось» позже (с помощью присвоения свойств или любых других ловушек, которые у вас есть).
Если у вас есть существующий объект, создайте для него оболочку прокси-сервера, а затем другие части приложения будут использовать существующий объект, вы не увидите, чтобы с прокси что-то происходило; другие части объекта должны были бы иметь Прокси-сервер вместо исходного объекта.
Здесь вы можете window.app
переназначиться на Прокси-сервер, чтобы вместо этого другие ссылки на window.app
теперь ссылались на Прокси-сервер.
window.app = new Proxy(window.app, scopeHandler);