那vue中是如何检测数组变化的呢?
vue为什么没有对数组的每一项进行双向数据绑定?
1.数组在 JS 中常被当作栈,队列,集合等数据结构的实现方式,会有批量的数据以待遍历
Vue 中是通过对每个键设置 getter/setter 来实现响应式的,开发者使用数组,目的往往是遍历,此时调用 getter 开销太大了,所以 Vue 不在数组每个键上设置。
Vue数组中的数据是怎么被监听的?
看来Vue能对数组进行监听的原因是,把数组的方法重写了。总结起来就是这几步:
01先获取原生 Array 的原型方法,因为拦截后还是需要原生的方法帮我们实现数组的变化。
02对 Array 的原型方法使用 Object.defineProperty 做一些拦截操作。
03把需要被拦截的 Array 类型的数据原型指向改造后原型。