Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有深嵌套对象的代理处理程序_Javascript_Proxy - Fatal编程技术网

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];
    }
}