1.什么是数据代理
是在实例化MVVM的时候传入一个配置对象,拿到配置对象里面的data,调用object.keys方法对传入的data进行遍历,在调用proxy.data方法传入data中每一个属性,在调用object.proptype方法给vm实例对象中的data添加数据,并且重写get和set方法
2.什么是数据劫持
开始进行数据劫持,遍历 data 对象中所有的属性,定义响应式的数据,创建 dep 对象,进
行 深度递归数据劫持,调用 object.defineProperty() 方法,为劫持对象的 data 属性添加
data 对象中的每个属性,重写 get 和 set 方法;数据劫持完毕后,每个属性会产生对应的
dep 对象
3.v-model的原理
本质就是模板解析和数据劫持
也可以扩展出MVVM,model vue vue model ,是vue跟model的一个双向数据绑定,视图改变数据改变,数据改变视图改变
4.模板解析(简版)
首先 Vue 中是有模板解析存在的;
模板解析发生在数据代理和数据劫持之后,
首先创建编译实例对象,传入选择器和vm实例对象,内部存储vm,通过选择器获取模板容
器对象,创建文档碎片对象,把模板容器中所有的节点全部都放进文档碎片对象中: