代理获取处理程序调用代理评估

我定义了一个代理如下:

const o1 = { ready: false }; setTimeout(() => { o1.ready = true; }, 1000000000); const handler = { get(target, propKey, receiver) { if (target.ready == false) { throw new Error('not ready'); } else { return 'ready' } } }; const proxy = new Proxy(o1, handler); proxy; // raises 'not ready' 

评估proxy引发错误“未准备好”,即使它不是一个属性访问。 如何防止在对代理的引用进行评估时引发错误? 这会导致错误,而不需要分配。

这似乎与这个bug有关: https : //github.com/nodejs/node/issues/10731

我发现的最好的工作是专门忽略节点检查:

 const handler = { get(target, propKey, receiver) { if (propKey != util.inspect.custom && propKey != 'inspect' && propKey != Symbol.toStringTag){ if (target.ready == false) { throw new Error('not ready'); } else { return 'ready' } } } }; 

或者,如果你知道你关心的钥匙清单,然后只检查那些,而不是排除。