使用 Object.defineProperty 进行数据劫持,把 data 对象、computed 等里的所有属性进行数据劫持
使用观察者模式,完成发布订阅。
模板里使用 data 对象属性的 dom 对象都订阅
当 data 对象里面的属性的值发生变化时,就会发布,发布时就改变了 dom 里的内容
侦测数据的变化 → 收集视图依赖了哪些数据 → 数据变化时,自动“同质化”需要更新的视图部分,并更新;
对应专业术语:数据劫持/数据代理 → 依赖收集 → 发布订阅模式
js侦测对象变化: Object.defineProperty(设定对象属性 setter/getter 监听)、ES6 的 Proxy
订阅者 Dep → 收集、删除、向 依赖发送消息等
观察者 Watch → 观察订阅依赖