Vue2的双向数据绑定原理及缺陷
时间:2023-7-9 11:17 作者:小诸葛 分类: Vue 正在检查是否收录...
Vue2的双向数据绑定原理及缺陷
利用订阅-开发者模式,vue初始化时会用Object.defineProperty()给data中的每一个属性添加getter和setter,同时创建dep和watcher进行依赖收集与派发更新,最后通过diff算法对比新老vnode的差异,通过patch即时更新。
Vue2使用Object.defineProperty()的缺陷是什么?
- 一次性递归到底开销很大,如果数据很大,大量的递归导致调用栈溢出
- 不能监听对象的新增属性和删除属性
- 当监听的下标对应的数据发生改变时,无法正确的监听数组的方法
- vue中通过重写了7个能够改变原数组的方法来进行数据监听
简洁说明:
无法对新添加或删除的属性进行监听、无法监听数组的变化
-
pop
: 移除并返回数组的最后一个元素。 -
push
: 向数组末尾添加一个或多个元素,并返回新数组的长度。 -
shift
: 移除并返回数组的第一个元素。 -
unshift
: 向数组开头添加一个或多个元素,并返回新数组的长度。 -
reverse
: 颠倒数组中元素的顺序(第一个元素变为最后一个,最后一个变为第一个)。 -
sort
: 对数组元素进行排序,默认按字符串Unicode码点进行排序。 -
splice
: 在指定位置修改数组,可以删除、替换或添加新元素,并返回被删除的元素数组。
推荐阅读:
扫描二维码,在手机上阅读