vue3.0中,响应式数据部分弃用了
Object.defineProperty
,使用Proxy
来代替它。本文将主要通过以下方面来分析为什么vue选择弃用Object.defineProperty
。
Object.defineProperty
真的无法监测数组下标的变化吗?- 分析vue2.x中对数组
Observe
部分源码- 对比
Object.defineProperty
和Proxy
一、无法监控到数组下标的变化?
在一些技术博客上看到过这样一种说法,认为
Object.defineProperty
有一个缺陷是无法监听数组变化:无法监控到数组下标的变化,导致直接通过数组的下标给数组设置值,不能实时响应。所以vue才设置了7个变异数组(
push
、pop
、shift
、unshift
、splice
、sort
、reverse
)的hack
方