我正在学习ES6,并找到了一个Proxy对象。总的来说,我知道了它是如何工作的。但是我对代理使用的问题。如我所附的示例所示,代理是从用户对象创建的。要“侦听”或“捕获”代理发生的事件,我们应该使用代理对象,但这不是我想要的。有没有办法“监听”原始(用户)对象发生的事件?
let user = {};
let proxy = new Proxy(user, {
get(target, prop) {
alert(`Reading ${prop}`);
return target[prop];
},
});
proxy.firstName; // Reading firstName
为清楚起见,让我们想象一下一种情况:我有一个物体,它不能正常工作。我想找出问题所在并创建一个代理。因此,接下来在代码中,我应该使用代理而不是原始的错误工作对象?因此,当我看到此问题的解决方案时,它应该可以这样工作:
let user = {} // wrong-working object
let proxy = new Proxy(user, {
get(target, prop) {
alert(`Reading ${prop}`);
return target[prop];
},
}); // new Proxy returns proxy which is just used for removing "event-listener"
user.firstName // Reading firstName
我能得到任何解释吗,为什么它如此工作?