一、Vue3 与 Vue2 在对象数据响应式上的区别
在 vue2 中,所有数据在底层都是通过使用Object.defineProperty()进行劫持后实现数据响应的。这使得如果一个数据为对象时,vue 无法对这个对象里面的元素进行监听,导致对象里的值无法实现响应式。
let o = {};
Object.defineProperty(o, 'prop1' {
//使属性可删除
configurable: true,
//有人读取o的某个属性时调用
get() {
return object.prop1;
},
//有人修改o的某个属性时调用
set(value) {
object.prop1 = value;
}
})
Object.defineProperty(o, 'prop2' {
//使属性可删除
configurable: true,
//有人读取o的某个属性时调用
get() {
return object.prop2;
},
//有人修改o的某个属性时调用
set(value) {
object.prop2 = value;
}
})
......