Vue2响应式原理和Vue3响应式原理

Vue2通过Object.defineProperty实现数据劫持,对对象属性的读写进行拦截,数组则重写了相关方法。Vue3使用Proxy代理对象,能更全面地拦截属性变化,同时结合Reflect进行对象操作。
摘要由CSDN通过智能技术生成

Vue2响应式原理

实现原理:
对象类型:通过Object.defineProperty()对属性的读取、修改进行拦截(数据劫持)。
数组类型:通过重写更新数组的一系列方法来实现拦截(对数组的变更方法进行了包裹)。

Object.defineProperty(目标对象,要添加的属性名,{
   get(){
   return xxx  //读取数据
   }
   set(){
    //修改数据
   }
})

Vue3响应式原理

实现原理:
1.通过Proxy(代理):拦截对象中任意属性的变化,包括:属性值的读写、添加、删除等。
2.通过Reflect(反射):对被代理对象的属性进行操作。

  new Proxy(data,{
   //拦截读取属性值
   get(target,prop){
     return Reflect.get(target,prop)
   }
  //拦截设置属性值或添加新属性
   set(target,prop,value){
     return Reflect.set(target,prop,value)
   }
   //拦截删除属性
   deleteProperty(target,prop){
     return Reflect.deleteProperty(target,prop)
   }
 })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值