那vue中是如何检测数组变化的呢?

vue为什么没有对数组的每一项进行双向数据绑定?

1.数组在 JS 中常被当作栈,队列,集合等数据结构的实现方式,会有批量的数据以待遍历

Vue 中是通过对每个键设置 getter/setter 来实现响应式的,开发者使用数组,目的往往是遍历,此时调用 getter 开销太大了,所以 Vue 不在数组每个键上设置。

Vue数组中的数据是怎么被监听的?

看来Vue能对数组进行监听的原因是,把数组的方法重写了。总结起来就是这几步:

01先获取原生 Array 的原型方法,因为拦截后还是需要原生的方法帮我们实现数组的变化。

02对 Array 的原型方法使用 Object.defineProperty 做一些拦截操作。

03把需要被拦截的 Array 类型的数据原型指向改造后原型。



posted @ 2021-11-07 21:30  浣熊sky  阅读(1008)  评论(0编辑  收藏  举报