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条答案
按热度按时间ldfqzlk81#
只有当 *Proxy本身 * 是后来“更改”的值(通过属性分配或任何陷阱)时,Proxy才会显示为执行任何操作。
如果你有一个现有的对象,为它创建一个代理 Package 器,然后应用程序的其他部分使用 * 现有的对象 *,你不会看到代理发生任何事情;对象的其他部分必须具有 * 代理 * 而不是原始对象。
在这里,您可以将
window.app
重新分配给Proxy,以便其他对window.app
的引用现在改为引用Proxy。