假设我有
const obj = {
level1: {
level2: {
level3: {
name: 'final-entry'
}
}
}
}
const handler = {
get: function(target, property) {
console.log(property);
if (typeof target[property] === 'object' && target[property] !== null) {
return new Proxy(target[property], handler)
} else {
return target[property];
}
}
}
const proxy = new Proxy(obj, handler);
console.log(proxy.level1.level2.level3.name);
运行此命令给我
level1
level2
level3
name
final-entry
此代理将是一项分析服务。因此,我希望能够构建整个用法,即知道proxy.level1.level2.level3.name
是按特定顺序调用的。
基本上,如果我要在跟踪器中执行proxy.level1.level2
和proxy.level1.level2.level3
,我会得到level1.level2
和level1.level2.level3
使用已完成的结果。
答案 0 :(得分:0)
您可以将所有返回的对象递归包装到代理中:
const proxify = obj => new Proxy(obj, {
get(target, property, receiver) {
console.log(property)
const value = Reflect.get(target, property, receiver);
if(typeof value === "object" && value !== null)
return proxify(value);
return value;
}
});
const proxy = proxify(obj);