Vue3 为什么选择 Proxy?看完这篇彻底搞懂 JavaScript 代理模式

大家好,我是小米,前几天陪朋友去逛商场,发生了一件特别有意思的事情,这家商场有个神秘人物,大家都叫他“总管”。

  • 顾客想进仓库拿东西?总管先检查。
  • 员工想查看库存?总管先登记。
  • 供应商送货?总管先验货。
  • 甚至老板想修改库存数据?总管还是先过一遍。

我当时突然灵光一闪:这不就是 JavaScript 里的 Proxy(代理模式)吗?

今天我们就通过这个“商场总管”的故事,彻底搞懂 JavaScript 代理模式最常见的几个应用场景:

  • 跟踪属性访问
  • 隐藏属性
  • 属性验证
  • 函数与构造函数参数验证
  • 数据绑定与可观察对象

看完之后,你会发现 Proxy 根本不是一个冷冰冰的 API,而是一个无所不能的“门卫”。

什么是 Proxy?

在 ES6 之前,如果想监听对象属性变化,其实非常麻烦,而 Proxy 出现之后,JavaScript 给了我们一个超级能力:在对象被访问之前,先经过我。

语法也很简单:

constproxy=newProxy(target, handler);

其中 target 是真实对象,handler 是代理规则,就像这样:

输出:

有人访问了: name

Tom

你会发现,访问的其实是 user,但中间经过了 Proxy,就像商场总管先检查一遍。

第一关:跟踪属性访问

假设你管理一个大型仓库,每次有人查看库存,你都想记录日志,现实中:

  • 张三查看库存
  • 李四查看库存
  • 王五查看库存

程序里也一样。

1、不使用 Proxy

你根本不知道谁访问了什么。

2、使用 Proxy

输出:

访问属性: name

iPhone

访问属性: price

7999

这样所有访问行为都能被记录。

3、实际应用

很多框架内部都会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件求生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值