Vue 3.0的双向数据绑定机制是怎样的?其优缺点有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1101个文字,预计阅读时间需要5分钟。
熟悉Vue的人都知道,在Vue2.x之前,我们都是使用+object.defineProperty+来实现双向数据绑定的。而在Vue3.0中,这种方法被取代了。为什么我们要替换掉Object.defineProperty呢?这并不是因为不好,而是因为有更好的方法。
熟悉vue的人都知道在vue2.x之前都是使用object.defineProperty来实现双向数据绑定的
而在vue3.0中这个方法被取代了
1. 为什么要替换Object.defineProperty
替换不是因为不好,是因为有更好的方法使用效率更高
Object.defineProperty的缺点:
1. 在Vue中,
Object.defineProperty无法监控到数组下标的变化,
导致直接通过数组的下标给数组设置值,不能实时响应。
push() pop() shift() unshift() splice() sort() reverse()
2. Object.defineProperty只能劫持对象的属性,因此我们需要对每个对象的每个属性进行遍历。
Vue里,是通过递归以及遍历data对象来实现对数据的监控的,
如果属性值也是对象那么需要深度遍历,显然如果能劫持一个完整的对象,不管是对操作性还是性能都会有一个很大的提升。
本文共计1101个文字,预计阅读时间需要5分钟。
熟悉Vue的人都知道,在Vue2.x之前,我们都是使用+object.defineProperty+来实现双向数据绑定的。而在Vue3.0中,这种方法被取代了。为什么我们要替换掉Object.defineProperty呢?这并不是因为不好,而是因为有更好的方法。
熟悉vue的人都知道在vue2.x之前都是使用object.defineProperty来实现双向数据绑定的
而在vue3.0中这个方法被取代了
1. 为什么要替换Object.defineProperty
替换不是因为不好,是因为有更好的方法使用效率更高
Object.defineProperty的缺点:
1. 在Vue中,
Object.defineProperty无法监控到数组下标的变化,
导致直接通过数组的下标给数组设置值,不能实时响应。
push() pop() shift() unshift() splice() sort() reverse()
2. Object.defineProperty只能劫持对象的属性,因此我们需要对每个对象的每个属性进行遍历。
Vue里,是通过递归以及遍历data对象来实现对数据的监控的,
如果属性值也是对象那么需要深度遍历,显然如果能劫持一个完整的对象,不管是对操作性还是性能都会有一个很大的提升。

