Proxy 是用于拦截并自定义对象基本操作的构造器,通过 target 和 handler 创建代理对象,支持 get、set 等陷阱方法,比 Object.defineProperty 更全面、不污染原对象且能动态拦截新增属性。

Proxy 是 JavaScript 中用于拦截并自定义对象基本操作的构造器,它允许你创建一个代理对象来包装目标对象,并在访问、修改、删除等行为发生时插入自定义逻辑。 它不是给对象加属性或改原型,而是“站在对象前面”,把所有对它的操作先过一遍你的控制函数。
Proxy 的基本结构:target + handler
创建 Proxy 需要两个参数:
- target:要被代理的原始对象(可以是普通对象、数组、函数,甚至 null 以外的任意值)
-
handler:一个配置对象,里面定义各种“陷阱”(trap),比如
get、set、has、deleteProperty等
示例:拦截读取和赋值
const target = { count: 0 };
const proxy = new Proxy(target, {
get(obj, prop) {
console.log(`读取 ${prop}`);
return obj[prop];
},
set(obj, prop, value) {
console.log(`设置 ${prop} = ${value}`);
obj[prop] = value;
return true; // 必须返回 true 表示赋值成功
}
});
proxy.count; // 输出:读取 count → 0
proxy.count = 5; // 输出:设置 count = 5 → 赋值生效
登录后复制
常用拦截方法(trap)及典型用途
不是所有操作都默认拦截,只有你在 handler 里显式定义了对应 trap,才会生效。常见且实用的有:
立即学习“Java免费学习笔记(深入)”;
标签: javascript java proxy 区别
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~