gpt4 book ai didi

Javascript 代理构建所有嵌套调用

转载 作者:行者123 更新时间:2023-11-30 06:17:27 25 4
gpt4 key购买 nike

假设我有

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.level2proxy.level1.level2.level3,我可以获得 level1 的结果。 level2level1.level2.level3 用法已完成。

最佳答案

您可以递归地将所有返回的对象包装到代理中:

 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);

关于Javascript 代理构建所有嵌套调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55307893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com