vue2和vue3实现响应的原理

vue2 :实现响应式的核心api es5提供的object.definProperty()。当vue在实力化的时候,会通过object.definProperty给data 对象的所有属性添加getter/setter 方法。当数据发生改变的时候会触发对应的setter 方法,从而触发页面渲染流程(为什么vue2 的data 是一个方法而不直接定义成一个对象????) 

vue3:实现响应式的核心api 是 es6提供 Proxy api  vue 通过这个api 可以拦截对象中任意属性的变化,当数据发生改变的时候 Proxy的set捕获器会被调用,从而触发页面渲染

v2和v3响应式的优缺点

优点

 v3:Proxy 监听的式整个对象中所有属性的变化,因此可以监听到新增,和删除属性

缺点

v2:  1.无法监听新增、删除属性

       2.无法监听原始数组,需要特殊处理(如push,pop, shift,unshift)

   解决办法:this.$set()  , this.$delete()

      3 .深度监听需要一次性递归消耗较大

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值