事件流: 触发 a.b/a 所对应的bing信息
computed: 依赖,a.b/a 的信息时,也会进行触发
- deps
- 三个binging
this.subs: 在哪里注意的
- this
computed里的任务,会丢到queue中进行执行
- 防止多次执行
订阅器
vm.a.b.c = 1
vm = {
data:{
get a(){
dps.push()
}
},
on:{
get(key){
emit(`change:${key}`)
emit(`change:a.b.c`)
emit(`change:a.b`)
emit(`change:a`)
},
set(){
}
}
}
$watch:{
on(`change:a`,function(){
})
}
// 注册computed
// 匿名注册computed
computed 属性会有依赖收集的地方
- v2、v3 包含render,所以是被动的,不会主动触发
computed 如果没有使用,不会执行
但是1不一样
computed的初始化
- d: 开始进行收集
-- 1. 包含了d 收集的事件emiitter
---2. 对computed的get 进行执行
--- d的binging信息,包含了多个依赖
-- a
-- binging.subs [被a依赖的属性/binging结构]
-- b
-- c
$watch
app.$watch("a",()=>{
console.log(11)
})
- change:a 产生了变化,进行如下操作
- 执行回调函数 [放入到任务队列当中]
- 订阅跟直接写函数有什么区别
observe.emit("change:a")
observe?.changeA()
- 为什么template中可以获取到 data/methods/computed 中的属性?
- methods : 会初始化一个binging
- 定义api methods/data/computed 是统一级的内容,都包含一个binging,并对vm进行直接绑定