SOURCE

let shouldTrack = true
// 当前激活的 effect
let activeEffect
// 原始数据对象 map
const targetMap = new WeakMap()
function track(target, type, key) {
    if (!shouldTrack || activeEffect === undefined) {
        console.log('track shouldTrack=' + shouldTrack + ' activeEffect=' + activeEffect)
        return
    }
    let depsMap = targetMap.get(target)
    if (!depsMap) {
        // 每个 target 对应一个 depsMap
        targetMap.set(target, (depsMap = new Map()))
    }
    let dep = depsMap.get(key)
    if (!dep) {
        // 每个 key 对应一个 dep 集合
        depsMap.set(key, (dep = new Set()))
    }
    if (!dep.has(activeEffect)) {
        // 收集当前激活的 effect 作为依赖
        dep.add(activeEffect)
        // 当前激活的 effect 收集 dep 集合作为依赖
        activeEffect.deps.push(dep)
    }
}

function trigger(target, type, key) {
    // 通过 targetMap 拿到 target 对应的依赖集合
    const depsMap = targetMap.get(target)
    if (!depsMap) {
        //如果depsMap没有依赖,则直接返回
        console.log('depsMap没有依赖,则直接返回')
        return
    }
    //创建运行effects的集合
    const effects = new Set()
    // 添加 effects 的函数
    const add = (effectsToAdd) => {
        if (effectsToAdd) {
            effectsToAdd.forEach(effect => {
                effects.add(effect)
            })
        }
    }
    // SET | ADD | DELETE 操作之一,添加对应的 effects
    if (key !== void 0) {
        add(depsMap.get(key))
    }

    const run = (effect) => {
        // 调度执行
        if (effect.options.scheduler) {
            effect.options.scheduler(effect)
        } else {
            //直接执行
            effect()
        }
    }
    // 遍历执行 effects
    
}
console 命令行工具 X clear

                    
>
console