可撤销的Proxy代理

当使用new Proxy的方式创建一个代理后,通常其代理不能脱离其目标,如果想创建一个可撤销的代理,可以使用Proxy.revocable

Proxy.revocable传递的参数和Proxy相同,它的返回值是两个对象:

  • proxy 可被撤销的代理对象
  • revoke 撤销代理要调用的函数

如下代码

const target = {
  name: "leevare",
};

const { proxy, revoke } = Proxy.revocable(target, {});
console.log(proxy.name); // leevare
revoke();
console.log(proxy.name); // TypeError: Cannot perform 'get' on a proxy that has been revoked

Proxy.revocable在撤销之前,和new Proxy代理的对象表现是一致的,访问proxy.name会透传到target.name的值,但是当调用了revoke之后,表示撤销了代理,这时候proxy已经不是一个代理对象,访问proxy.name会抛出一个错误。

如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的电子邮箱地址不会被公开。