Javascript 代理窗口对象以检测更改

Javascript 代理窗口对象以检测更改,javascript,ecmascript-6,proxy,window,Javascript,Ecmascript 6,Proxy,Window,我可以代理窗口对象来检测更改吗?我尝试了以下方法,但没有成功: var处理程序={ get:函数(目标、属性){ console.log(“为“+目标”获取“+属性+”); 返回目标[属性]; }, 集合:函数(目标、属性、值、接收者){ console.log(“为“+target+”设置“+property+”,值为“+value”); 目标[财产]=价值; 返回true; }, }; var p=新代理(窗口、处理程序); 设置超时(()=>{ window.a=10;//需要一个日志,

我可以代理
窗口
对象来检测更改吗?我尝试了以下方法,但没有成功:

var处理程序={
get:函数(目标、属性){
console.log(“为“+目标”获取“+属性+”);
返回目标[属性];
},
集合:函数(目标、属性、值、接收者){
console.log(“为“+target+”设置“+property+”,值为“+value”);
目标[财产]=价值;
返回true;
},
};
var p=新代理(窗口、处理程序);
设置超时(()=>{
window.a=10;//需要一个日志,但没有。。。
}, 3000);
设置超时(()=>{
window.c=20;//需要一个日志,但没有。。。

}, 4000);您必须在较低的代码中引用代理实例,而不是
窗口

var处理程序={
get:函数(目标、属性){
console.log(“为“+目标”获取“+属性+”);
返回目标[属性];
},
集合:函数(目标、属性、值、接收者){
console.log(“为“+target+”设置“+property+”,值为“+value”);
目标[财产]=价值;
返回true;
},
};
var p=新代理(窗口、处理程序);
设置超时(()=>{
p、 a=10;//{

p、 c=20;//但我只需要检测
窗口的更改
。用例是检查
窗口是否有更改。pluginX
然后初始化插件。因为插件在加载时会向
窗口添加一个道具
pluginX
,所以我只需要检查一下,然后做我的事情。@eozzy你能解决这个问题吗?我也想列出更改窗口属性,并在此基础上更改指向该窗口属性的全局变量。@ZameerHaque将要侦听的窗口属性设置为getter/setter。是的,最终完成了该操作。代理将非常好,因为访问窗口属性的共享模块不必更改用于调用属性的e签名。