前端面试题 vue2与vue3 响应式数据理解?

64 篇文章 1 订阅
33 篇文章 1 订阅

解释1:

vue2 采用了 defineProperty(Vue.util.defineReactive) 将数据定义成了响应式数据(拦截所有的属性,增加了getter和setter)。

    对数组并没有采用defineProperty,因为数组中可能数据很长,但是用户不会操作索引更改数据

vue2缺陷:要递归监控,不存在的属性无法被监控到。

如何避免缺陷:vue2 减少层级嵌套不要过深

            如果不需要响应式数据就不要放在data中,合理使用Object.freeze

            尽量缓存使用过的变量

vue3 采用了proxy直接可以对象拦截,不用重写get和set方法,性能高,不需要直接递归。

解释2:

响应式:数据改变,视图跟着更新

1 vue2是通过Object.defineProperty() get,set来进行数据劫持(Observer)实现的,Object.defineProperty是默认对数据第一层进行计算,

如果数据嵌套过多,递归调用很耗性能。

2 vue3:采用proxy(无论是简单数据还是复杂数据都可以进行劫持)。 如果是多层次数据,不使用就不会递归(懒递归)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值