我需要从自己的处理程序中引用当前的Proxy
实例。我没有在我读过的任何文档中看到这一点,我只是好奇,如果有任何自然的方法可以做到这一点。
问题是,在处理程序对象中,this
自然地指向处理程序,而不是Proxy
它是的处理程序。
例如:
var ProxyHandler = {
get: function(object, property) {
var thisProxy = ??? // how to reference myProxy from here?
}
};
var someObj = {foo: "bar"};
var myProxy = new Proxy(someObj, ProxyHandler);
console.log(myProxy.foo);
答案 0 :(得分:2)
代理get
处理程序的签名是
function(target, property, receiver) {
所以,既然你做了myProxy.foo
,那么receiver
参数将是myProxy
,遵循属性访问上下文的标准逻辑。
答案 1 :(得分:1)
处理程序的默认行为如下
let handler = {
get(target, propKey, receiver) {
return (...args) => console.log(args);
}
};
let proxy = new Proxy({}, handler);
接收器属于Proxy类型,在我们的例子中,它是 myProxy
的对象