ECMAScript 6引入了代理对象,可以将其创建为可撤销的。
如何检测代理是否已被撤销?
答案 0 :(得分:0)
Proxy
构造函数只接受目标和处理程序作为对象且不是撤销代理。来自ProxyCreate,
- 如果Type( target )不是Object,则抛出TypeError异常。
- 如果 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;
}
}