乐趣区

关于github:Watchvm-exp

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() // 如果发生变化,告诉所有订阅者
}

})

退出移动版