vue对数组为啥不适用object.defineProperty
因为对数组使用数据劫持,会对数组里面的每一项都进行劫持,数组中一万条数据,就会劫持10000次,性能极差
所以要对数组方法进行重写 push pop unshiif shift reverse sort splice (不是覆盖),因为只有被vue控制的数组才需要重写
重写数组的方法的思路(aop切片编程)
- 使用原有数组方法进行数据的增删改,
- 通知视图更新
数组重写
怎么使用重写后的方法
在进行监听的时候进行判断,判断值是数组时
- 如果支持原型对象,就将value值得原型对象指向改写后的数组原型
- 否则, 则是遍历重写后数组中的方法key,进行覆盖使用重写后的方法