Proxy 和 Reflect

Proxy 为什么需要 Reflect 来配合

Proxy 的局限性

使用示例

// 要包装的对象
let target = {};

// 代理配置
const handler = {
  // 拦截写入
  set(target, prop, val, receiver) {
    return Reflect.set(target, prop, val, receiver);
  },
  // 拦截读取
  get(target, prop, receiver) {
    return Reflect.get(target, prop, receiver);
  },
};

// 代理对象
let proxy = new Proxy(target, handler);

可撤销 Proxy

let object = {
  data: 'Valuable data',
};

let { proxy, revoke } = Proxy.revocable(object, {});

alert(proxy.data); // Valuable data

revoke();

alert(proxy.data); // Error