Proxy 代理

js/proxy2026-08-24 19:46:25

Proxy 对象 用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。

基本使用

  1. 创建目标对象:这是你想要代理的对象。
  2. 定义处理器对象:包含捕获器函数,这些函数会拦截并自定义目标对象的操作。
  3. 创建 Proxy 对象:使用 new Proxy(target, handler) 创建代理对象。
// 创建目标对象
const target = {
  message1: "hello",
  message2: "everyone"
};

// 定义处理器对象
const handler = {
  get: function(target, prop, receiver) {
    if (prop === 'message1') {
      return 'world';
    }
    return Reflect.get(...arguments);
  }
};

// 创建 Proxy 对象
const proxy = new Proxy(target, handler);

console.log(proxy.message1); // 输出: world
console.log(proxy.message2); // 输出: everyone

常用捕获器

  • get(target, prop, receiver): 拦截对象属性的读取操作。
  • set(target, prop, value, receiver): 拦截对象属性的设置操作。
  • has(target, prop): 拦截 prop in target 操作。
  • deleteProperty(target, prop): 拦截 delete target[prop] 操作。
  • apply(target, thisArg, argumentsList): 拦截函数调用操作。
  • construct(target, args): 拦截 new 操作符。

Proxy 提供了强大的功能,可以用来实现各种高级操作,如数据绑定、验证、格式化等。

参考

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy

本页目录