vue1源码06

66 阅读1分钟
事件流: 触发  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进行直接绑定