例如,如果我有这个处理程序/代理(来自MDN 示例)......
var handler = {
get: function(target, name){
return name in target?
target[name] :
37;
}
};
var p = new Proxy({}, handler);
p.a = 1;
p.b = undefined;
console.log(p.a, p.b); // 1, undefined
console.log('c' in p, p.c); // false, 37
是否有可能以p
某种方式探测代理,让我取回handler
对象。
类似于以下内容:
p.__handler__ // returns handler object -> Object {get: handler.get(), set: handler.set(), ...}
p.__handler__.get // returns get prop/fn of handler -> function(target, name){ ...}
显然,处理程序中设置的各种陷阱对于代理来说仍然是“已知的”,但是有没有一种明确的方法可以从代理本身返回它们/处理程序?如果是这样,怎么做?
目前我没有具体的用例,但是如果您想在已经拥有代理后动态更改处理程序/陷阱,我可以看到这很有用。