function observe(obj, cb) {
Object.keys(obj).forEach((key) => defineReactive(obj, key, obj[key] , cb))
}
function defineReactive (obj, key, val, cb) {
Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
get: ()=>{
/*....依赖收集等....*/
/*Github:https://github.com/answershuto*/
return val
},
set:newVal=> {
val = newVal;
/*订阅者收到消息的回调*/
cb()
}
})
}
let cb= function(){
console.log("属性更新了")
}
let data = {
Value:99
}
observe(data,cb)
data.Value = 199
console.log(data)
//输出: 属性更新了 { Value:199}
vue2.x 的响应式原理—vue源码探究记录001
最新推荐文章于 2023-06-23 22:57:47 发布