响应式/数据绑定(model==>View):data中的一个属性数据一旦更新,界面上所有直接或间接使用该属性的节点都会更新(update)实现数据绑定的两个节点重要技术数据劫持/monitoring:通过defineProperty()监控数据中所有属性(任意层级)的变化,一旦发生变化就更新界面。Subscriber-PublisherMode:可以知道界面上哪些节点需要更新四个重要的对象Observer用于劫持data中所有属性数据的构造函数为data中的所有属性重新定义属性描述(get/set)为每个创建对应的dep对象attributeindataDep(Depend)data(alllevel)中的每个属性都对应于创建dep对象的时机。在初始化definedata中的每个属性时创建对应的dep对象。当data中的一个属性值被设置为一个新的对象时,该对象的结构{id,//每个dep都有一个唯一的idsubs//包含n个对应watcher的数组(subscribes的缩写)}subs属性表示当一个watcher被创建后,当前的watcher对象会作为data属性在内部添加到对应dep对象的subs中,当其值发生变化时,subs中的所有watcher都会收到更新通知,最终更新对应的接口。Compile用于解析模板页面的对象的构造函数(实例)在每次解析表达式时使用compile对象来解析模板页面。(非事件指令)会创建对应的watcher对象,并建立watcher和dep的关系Complie和watcher关系:一对多关系Watcher模板中的每条非事件指令或表达式对应一个watcher对象进行监听当前表达式数据变化创建时机:模板初始化编译时{vm,//vm对象exp,//指令对应的表达式cb,//表达式对应数据变化时的回调函数值,//表达式的当前值depIds//表达式中各级属性对应的dep对象的集合对象//属性名是dep的id,属性值为dep}之间的关系dep和watcher:一个data中的many-to-many属性对应一个dep,一个dep可能包含多个watcher(模板中有几个表达式使用了attributes)。模板中的一个非事件表达式对应一个观察者,一个一个watcher可能包含多个dep(表达式包含多个数据属性)
