我正在尝试为某个对象创建代理,以检查属性是否被访问或修改,然后console.log
是被更改的属性。我对 JavaScript 还很陌生,所以我不确定是什么导致堆栈溢出。我认为这是由于一个奇怪的范围问题,console.log
但我不确定。这就是我的处理程序的样子
var handler = {
set: function(obj, prop, value) {
console.log(prop);
obj[prop] = value;
}
get: function(obj, prop, receiver) {
if (typeof prop !== 'symbol') console.log(prop);
return obj[receiver];
}
};
我将处理程序分配给使用此行CanvasRenderingContext2D
命名的元素。ctx
watchedCtx = new Proxy(ctx, handler);
我在 get 属性方法中添加了额外的检查,因为我从 get 方法收到了很多Symbol
原语,我认为这是问题所在,所以我试图将它们过滤掉。有没有其他人遇到过这个问题或知道是什么原因造成的?