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); Así que estoy tratando de detectar cualquier cambio cada vez que la app o cualquiera de sus app.reports cambios, pero no registra nada. ¿Qué estoy haciendo mal?
Un Proxy solo parecerá hacer algo si el propio Proxy es el valor que se "cambia" más tarde (a través de la asignación de propiedades o cualquier trampa que tenga).
Si tiene un objeto existente, cree un envoltorio Proxy para él, y luego otras partes de una aplicación usan el objeto existente , no verá que suceda nada con el Proxy; las otras partes del objeto tendrían que tener el Proxy en lugar del objeto original.
Aquí, es posible que pueda reasignar window.app al Proxy, de modo que otras referencias a window.app ahora hagan referencia al Proxy en su lugar.
window.app = new Proxy(window.app, scopeHandler);