我正在学习 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
我能得到任何解释,为什么它会这样工作?