响应式原理方案一:Object.defineProperty基于 Object.defineProperty 通过 setter/getter 方法来监听数据的变化。 getter 进行依赖收集,setter 在数据变更的时候通知订阅者,递归调用监听对象的所有属性。缺点:无法检测到对象属性的添加或删除不能监听数组的变化,需要重写数组方法function defineReactive(obj, key, value) {
Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
get() {
console.log('get', obj, key, value)
return value
},
set(newVal) {
observe(newVal)
if (newVal !== value) {
console.log('set', obj, key, newVal)
value = newVal
}
}
...
继续阅读
(14)