Vue2.0与vue3.0响应式对比

Vue2.0 响应式原理
主要api------Object.defineProperty
(需要对数组相关方法进行重写;数组改变length无效;对象不存在的属性不能被拦截
)

  • 主要时对对象的属性做一些限制,是否可以被访问,被修改,被枚举等等;
  • 访问这个属性,会触发get方法
  • 修改这个属性,会触发set方法
  • 定义了get 方法,若没有return值出去,则访问该属性时,得到的会是undefined
  • 需要借助一个中间变量去存贮_value; 不优雅的地方;
var ob={
  a:1,
  b:2
}
var _value=ob.a;
Object.defineProperty(ob,'a',{
  get:function(){
    return _value;
  },
  set:function(newVal){
    _value= newVal;
    return _value
  }
})
console.log(Object.getOwnPropertyDescriptor(ob,'a'));
console.log(ob.a);
ob.a = 5
console.log(ob.a);

简单流程演示
在这里插入图片描述
vue3.0 改用proxy

两者对比:
defineProperty 只能监听某个属性,不能对全对象进行监听
因此,proxy可以省去for循环过程,提升效率
proxy可以监听数组,因此不用再单独对数组进行特殊处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值