Vue3.0为什么使用Proxy实现双向绑定

  1. Object.defineProperty只能劫持对象的属性,而Proxy是直接代理对象
    由于Object.defineProperty只能对属性进行劫持,需要遍历对象的每个属性。而Proxy可以直接代理对象。
  2. Object.defineProperty对新增属性需要手动进行Observe, 由于Object.defineProperty劫持的是对象的属性,所以新增属性时,需要重新遍历对象,对其新增属性再使用Object.defineProperty进行劫持。 也正是因为这个原因,使用 Vue 给data中的数组或对象新增属性时,需要使用vm.$set才能保证新增的属性也是响应式的。
  3. Proxy支持13种拦截操作,这是defineProperty所不具有的。
  4. 新标准性能红利
    Proxy作为新标准,长远来看,JS引擎会继续优化Proxy,但gettersetter基本不会再有针对性优化。
  5. Proxy兼容性差 目前并没有一个完整支持Proxy所有拦截方法的Polyfill方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值