这是我的代理人:
const handler = {
get: function(target, key) {
const next = target.object[key];
if (typeof next === 'object' && next !== null) {
return new Proxy({object: next}, handler)
} else {
return next;
}
}
}
const proxy = new Proxy({object: someObj}, handler);
基本上,我喜欢附加其他元数据,但是在返回值时,我希望将原始结果返回。在这里,我将实际对象存储在object
键下,稍后将向代理添加其他数据。
这可以正常工作,但是不幸的是,传递的对象不再通过引用传递,即
const proxy ...
// would log say "myName"
console.log(proxy.users[0].name);
proxy.users[0] = someOtherUser;
// Still logs "myName"
console.log(proxy.users[0].name);
为什么?