例如,如果我有这个处理程序/代理(来自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
Run Code Online (Sandbox Code Playgroud)
是否可以探测代理,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){ ...}
Run Code Online (Sandbox Code Playgroud)
显然,在处理程序中设置的各种陷阱仍然对代理"已知",但有一种明确的方式从代理本身返回它们/处理程序吗?如果是这样,怎么样?
我目前没有具体的用例,但如果您想在已经拥有代理之后动态更改处理程序/陷阱,我可以看到这很有用.