7. vue3.0 中为什么要使用 Proxy,它相比以前的实现方式有什么改进

Vue3.0弃用了Vue2.x的数据劫持,转而采用Proxy实现响应式,Proxy提供了更底层的访问拦截,支持数组索引修改和对象属性动态添加删除,提升了性能。Proxy的get和set方法用于追踪和触发副作用,实现了更高效的数据响应机制。
摘要由CSDN通过智能技术生成

7. vue3.0 中为什么要使用 Proxy,它相比以前的实现方式有什么改进

7.1 原回答

  1. Vue2.x通过给每个对象添加getter setter属性去改变对象,实现对数据的观测,Vue3.x通过Proxy代理目标对象,且一开始只代理最外层对象,嵌套对象lazy by default ,性能会更好
  2. 支持数组索引修改,对象属性的增加,删除

7.2 查阅补充

(1)Proxy

  • Proxy 是一个对象,它包装了另一个对象,并允许你拦截对该对象的任何交互。

    • Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。
  • 我们这样使用它:const proxy = new Proxy(target, handler)

    • target 是 目标对象
    • proxy 是 代理对象
  • 使用 Proxy 的一个难点是 this 绑定。

    • 虽然 Proxy 可以代理针对目标对象的访问,但它不是目标对象的透明代理,即不做任何拦截的情况下,也无法保证与目标对象的行为一致。主要原因就是在 Proxy 代理的情况下,目标对象内部的this关键字会指向 Proxy 代理。

      const target = {
             
        m: function () {
             
          console.log(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ChrisP3616

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

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

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

打赏作者

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

抵扣说明:

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

余额充值