比如下面的例子:
<div id="app">
{{v1}}
<button @click="v3++">点击</button>
</div>
data(){
return {
v3: 3,
}
},
computed: {
v1() {
return this.v2
},
v2() {
return this.v3
}
}
v3++,因为v3的get方法中收集了v2的watcher和render的watcher到自己的闭包中,所以++的时候的set方法会导致v2的dirty为true,并重新render
但是注意v3的闭包中也有v1的watcher,因为v2的get方法被重写了,页面上显示v1的时候,会调用的v3的get方法。所以++的时候v1的dirty也为true