目标: 让各个模块之间的联系不那么紧密
如果修改了什么属性,就尽可能只更新这些属性对应的页面DOM
例子: 预售
1、可能一个东西没有现货,我向老板预定,如果东西到了,就通知我
=》老板是发布者
=》 订阅的东西作为中间媒介
=》我是订阅者
- 需要一个全局容器,用来存储 可以被触发的 (对象,函数)
- 需要一个方法,可以往容器中传入 对象,函数
- 需要一个方法,可以将 容器中的对象/函数取出来
依赖收集
读取 将watcher存入全局容器中,被称为 依赖收集
派发更新
修改 将全局容器中的watcher取出执行,被称为 派发更新