Skip to content

Proxy 和 Reflect

Proxy 用来拦截对象上的底层操作,Reflect 用来以标准方式转发这些操作。它们通常一起出现。

先抓住核心模型

可以把 Proxy 理解成“对象的代理层”:

js
const target = { name: 'Lee' }

const proxy = new Proxy(target, {})

console.log(proxy.name) // 'Lee'

如果 handler 为空,代理几乎就是透明的;如果在 handler 里声明了 trap,就能拦截对应操作。

基本语法

js
const proxy = new Proxy(target, handler)
  • target:被代理的目标对象
  • handler:拦截规则

Proxy 适合解决什么问题

Proxy 更适合做“行为拦截”,例如:

  • 读取时补默认值
  • 写入时校验
  • 访问时做日志记录
  • 函数调用时包一层控制逻辑
  • 暴露一个受控接口,而不是原始对象

如果只是普通对象读写,通常不需? Proxy 和 Reflect

Proxy 用来拦截对象上的底层操作,Reflect 用来以标准方式转发这?m Proxy 用来拦,

先抓住核心模型

可以把 Proxy 理解成“对象的代理层”:

js
const target = { name: 'Lee')

可以把 `Proxy` le.log(
```js
const target = { name: 'Lee' }

const js
const
const proxy = new Proxy(target, {})
arg
console.log(proxy.name) // 'L if```

如果 `handler` 为空,代理?
?

基于 MIT 许可发布