检查代理对象是否已被撤销

时间:2016-09-05 18:23:46

标签: javascript es6-proxy

ECMAScript 6引入了代理对象,可以将其创建为可撤销的。

如何检测代理是否已被撤销?

1 个答案:

答案 0 :(得分:0)

Proxy构造函数只接受目标和处理程序作为对象且不是撤销代理。来自ProxyCreate

  
      
  1. 如果Type target )不是Object,则抛出TypeError异常。
  2.   
  3. 如果 target 是代理异国情调的对象,并且 target 的[[ProxyHandler]] internal slot的值为null,则抛出TypeError异常。< / LI>   

这允许您检查某个值是否为已撤销的代理:您只需要ensure that it's an object但是会​​Proxy抛出。

这样的事情应该有效:

function isRevokedProxy(value) {
  try {
    new Proxy(value, value);
    return false;
  } catch(err) {
    return Object(value) === value;
  }
}