function defineReactive (data, key, val) {
observe(val)
// var $Dep = new Dep()
Object.defineProperty(data, key, {
enumberable: true,
configurable: true,
get: function () {
// if (Dep.target) $Dep.addSubs(Dep.target)
return val
},
set: function (newVal) {
// if (val === newVal) return
val = newVal
console.log(`属性 ${key} 已被监听,新的值是 ${newVal.toString()}`)
// $Dep.notify()
}
})
}
function observe (data) {
if (!data || typeof data !== 'object') return
Object.keys(data).forEach(function (key) {
defineReactive(data, key, data[key])
})
}
var person = {
'Alex': {
'salary': 0
},
'Bob': {
'age': 20
}
}
observe(person)
setTimeout(function () {
person.Alex.salary = 20000
person.Bob.age = 40
})
console