什么是javascript代理_Proxy对象能拦截哪些操作

admin 百科 11
Proxy是JavaScript用于拦截并自定义对象基本操作的代理构造函数,通过handler提供get、set、has、deleteProperty等trap拦截读写、枚举、构造等行为,支持校验、日志、响应式等场景。

什么是javascript代理_Proxy对象能拦截哪些操作-第1张图片-佛山资讯网

JavaScript 的 Proxy 对象是一个用于创建代理(proxy)以拦截并自定义对目标对象基本操作的内置构造函数。 它不是用来替代对象的,而是“包一层”,让开发者能在读取、赋值、删除、遍历等关键行为发生时插入自己的逻辑——比如校验、日志、响应式更新、权限控制等。

Proxy 能拦截哪些操作?

Proxy 通过 handler(处理器)对象 提供一系列可选的捕获器(traps),每个 trap 对应一种底层操作。常用且高频的包括:

  • get(target, prop, receiver):拦截读取属性(obj.xobj['x'])、访问原型链上的属性,也用于 in 操作符和 for...in 遍历的属性存在性检查。
  • set(target, prop, value, receiver):拦截设置属性(obj.x = 1obj['x'] = 1),可阻止赋值、转换类型、触发通知等。
  • has(target, prop):拦截 prop in obj 操作,控制属性“是否存在”的语义。
  • deleteProperty(target, prop):拦截 delete obj.x,可禁止删除或做清理工作。
  • ownKeys(target):拦截 Object.getOwnPropertyNames()Object.keys()for...in 等枚举操作,能隐藏或动态添加键名。
  • defineProperty(target, prop, descriptor):拦截 Object.defineProperty() 调用,控制属性描述符是否生效。
  • getOwnPropertyDescriptor(target, prop):拦截 Object.getOwnPropertyDescriptor(),可伪造或过滤属性描述信息。
  • construct(target, args, newTarget):仅对函数/类代理有效,拦截 new ProxyFn(...) 调用,可返回自定义实例。
  • apply(target, thisArg, args):仅对函数代理有效,拦截函数调用(proxyFn(...)),可用于装饰、节流、参数预处理等。

一个简单但典型的例子

比如用 Proxy 实现一个带数据校验的“安全对象”:

标签: vue javascript java 处理器 app 工具 proxy

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~