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

Vue2的双向数据绑定原理是什么?

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

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

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

你可能感兴趣的:(vue,vue.js,javascript,前端)