«

Vue2的双向数据绑定原理及缺陷

时间:2023-7-9 11:17     作者:小诸葛     分类: Vue     正在检查是否收录...


Vue2的双向数据绑定原理及缺陷

利用订阅-开发者模式,vue初始化时会用Object.defineProperty()给data中的每一个属性添加getter和setter,同时创建dep和watcher进行依赖收集与派发更新,最后通过diff算法对比新老vnode的差异,通过patch即时更新。

Vue2使用Object.defineProperty()的缺陷是什么?

  1. 一次性递归到底开销很大,如果数据很大,大量的递归导致调用栈溢出
  2. 不能监听对象的新增属性和删除属性
  3. 当监听的下标对应的数据发生改变时,无法正确的监听数组的方法
  4. vue中通过重写了7个能够改变原数组的方法来进行数据监听

简洁说明:

无法对新添加或删除的属性进行监听、无法监听数组的变化


  1. pop: 移除并返回数组的最后一个元素。

  2. push: 向数组末尾添加一个或多个元素,并返回新数组的长度。

  3. shift: 移除并返回数组的第一个元素。

  4. unshift: 向数组开头添加一个或多个元素,并返回新数组的长度。

  5. reverse: 颠倒数组中元素的顺序(第一个元素变为最后一个,最后一个变为第一个)。

  6. sort: 对数组元素进行排序,默认按字符串Unicode码点进行排序。

  7. splice: 在指定位置修改数组,可以删除、替换或添加新元素,并返回被删除的元素数组。

Vue2 双向数据绑定原理及缺陷

推荐阅读:


扫描二维码,在手机上阅读