Appearance
响应式2.0与3.0的对比
在Vue2中,是用的 Object.defineProperty
,在Vue3中,则是用的proxy
;
先说 2.0:
- 2.0 需要对每个属性进行监听,对 data 的属性是遍历 + 递归为每个属性设置 getter 和 setter
- 2.0 数组添加元素和长度的变化无法监视到采用的是
this.$set(obj,index,value)
的方法 - 对象的添加值和删除值,
Object.defineProperty
无法观测,采用的是this.$set(obj,key,value)
的方法
再说 3.0:
弥补了上方所说的 2.0 中包含的 缺点
采用了 惰性监听,初始化的时候,不再创建 Observer,而是会在用到的时候去监听,效率更高。