事件 --> 订阅 --> vm
{
a:1
}
a =2
vm = {
// 1. 提供更好看的api
get a(){
},
$data:{
get a(){
// 涉及到 收集
},
set a(){
// 涉及到数据的更新
// observe._ctx == vm
// vm.emit("set","a")
},
}
}
// --》 嵌套
{
a:{
b:1
}
}
a.b = 2
vm = {
// 1. 提供更好看的api
get a(){
},
$data:{
get a(){
// 涉及到 收集
return {
get b(){
// 涉及到 收集
},
set b(){
// 涉及到数据的更新
}
}
},
set a(){
// 涉及到数据的更新
},
}
}
// ---
{
a:{
b:1,
c:2
}
}
// a.b = 2
<user :info="a"> --- {{a}}
<user :info="a.b"> --- {{a.b}}
<user :info="a.c"> --- {{a.c}}
// set 两种场景
-. 修改我自身的依赖 -- set
-. 修改我父类的依赖 -- mutate
- 事件流 --> vm
new
-. 编译
运行/js
-. 运行时修改属性/数据/ job的准备
nextTick
-. 渲染
vm = {
// 1. 提供更好看的api
get a(){
},
$data:{
get a(){
// 涉及到 收集
return {
get b(){
// 涉及到 收集
},
set b(){
// 当b 修改时,所有依赖a变化的是否也修改?
// -. 工作 通知a,进行修改
emit("set","b")
}
}
},
set a(){
// 通知到vm
emit("set","a.b")
emit("set","a")
},
},
listeners:{
a(){
name = key的值
// a.b产生了修改
// 涉及到数据的更新
// 刷新
nextTick()
}
}
}
a.b = 2