Javascript 具有深嵌套对象的代理处理程序
我想为任何复合对象创建一个代理处理程序。例如,像这样的对象(我想处理函数调用): 我制作了一个简单的处理程序,但它不适用于嵌套属性:Javascript 具有深嵌套对象的代理处理程序,javascript,proxy,Javascript,Proxy,我想为任何复合对象创建一个代理处理程序。例如,像这样的对象(我想处理函数调用): 我制作了一个简单的处理程序,但它不适用于嵌套属性: var handler = { get: function(target, name) { return typeof target[name] == 'function' ? 'function call' : target[name]; } } 我可以创建一个处理程序来将每个属性包装在代理中。这是可行的,但我认为这不是最好的方
var handler = {
get: function(target, name) {
return typeof target[name] == 'function' ? 'function call' : target[name];
}
}
我可以创建一个处理程序来将每个属性包装在代理中。这是可行的,但我认为这不是最好的方法:
var handler = {
get: function(target, name) {
if (typeof target[name] == 'function') {
return 'function call';
}
return typeof target[name] == 'object' ? new Proxy(target[name], handler) : target[name];
}
}
有没有更有效的方法来解决这个问题
var obj={
a:{
b:{
c:callback=>setTimeout(()=>callback(null,'hello'),2000)
}
},
aa:{
bb:(回调,x,y)=>setTimeout(()=>callback(null,x+y),40000)
}
};
变量处理程序={
get:函数(目标、名称){
if(目标的类型[名称]='函数'){
返回“函数调用”;
}
返回target[name]=“object”?新代理(target[name],handler):target[name];
}
}
var p=新代理(obj,handler);
p、 a.b.c
你打算用函数道具做点什么,还是只返回字符串“函数调用”?是的,我想在将来处理它
var handler = {
get: function(target, name) {
if (typeof target[name] == 'function') {
return 'function call';
}
return typeof target[name] == 'object' ? new Proxy(target[name], handler) : target[name];
}
}