function Watch(vm, exp) {
this.vm = vm // 数据汇合this.exp = exp // 须要监听的属性this.value = this.get() // 初始化时触发本人的get
}
Watch.prototype = {
update() { // 执行Compile的办法,触发view更新},get() { Dep.target = this // Dep.target示意以后订阅者 let value = this.vm[this.exp] // 这里会触发Observer的getter,因为数据汇合曾经被劫持 Dep.target = null // 重置 return value}
}
Object.defineProperty(data,key,{
get() { Dep.target && dep.addDep(Dep.target) // 向订阅者容器中增加以后订阅者 return val},set() { dep.notify() // 如果发生变化,告诉所有订阅者}
})