

Observer是vue内部的构造器,我们可以通过Vue提供的静态方法vue.observable(object)间接的使用该功能在组件生命周期中,这件事发生在beforecreate之后,created之前。具体实现上,它会递归遍历对象的所有属性,以完成深度的属性转换。由于遍历时只能遍历到对象的当前属性,因此无法监测到将来动态增加或删除的属性,因此vue 提供了$set 和$delete两个实例方法,让开发者通过这两个实例方法对已有响应式对象添加或删除属性。
对于数组,vue 会更改它的隐式原型,之所以这样做,是因为vue需要监听那些可能改变数组内容的方法。总之,Observer的目标,就是要让一个对象,它属性的读取、赋值,内部数组的变化都要能够被vue感知到。

- state.a = "new data";
- state.b = "new data";
- state.c = "new data”;
- state.d = "new data";
这样显然是不合适的,因此,watcher收到派发更新的通知后,实际上不是立即执行对应函数,而是把自己交给个叫调度器的东西。
- // vue构造函数
- function Vue()
- //..,其他代码
- var updateComponent=()=>{
- this._update(this._render()
- }
- new Watcher(updatecomponent);
- //..其他代码
diff就发生在_update 函数的运行过程中
