4

我需要Proxy从它自己的处理程序中引用当前实例。我没有在我读过的任何文档中看到这一点,我只是好奇是否有任何自然的方法可以做到这一点。

事情是,在handler对象里面,this自然是指handler,而不是它Proxy的handler

例如:

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);
4

2 回答 2

4

代理get处理程序的签名是

function(target, property, receiver) {

所以既然你这样做myProxy.foo了,receiver参数将myProxy遵循属性访问上下文的标准逻辑。

于 2017-09-01T21:58:34.157 回答
1

handler的默认行为如下

let handler = {
    get(target, propKey, receiver) {
        return (...args) => console.log(args);
    }
};
let proxy = new Proxy({}, handler);

接收者是 Proxy 类型,在我们的例子中它是对象myProxy

于 2017-09-01T21:59:37.530 回答