1.vue对数据做了什么样的处理?
数据的data并不是直接赋给vm实列上的_data,中间vue会递归data并匹配set和get直至无对象递归,再把数据交给_data
2.vue是怎么侦听数据发生了变化的?
vue是通过set侦听数据是否发生变化,set本身是数据到页面渲染的通道,$set会对data的进行侦听总而渲染页面。
3.数据代理
vue会把data数据通过object.defineproperty()方法交给vm实列,所以改变data中的数据,vm._data中的数据同样发生改变。
4.双向数据绑定原理
vue也是同样把data数据通过object.defineproperty()方法交给vm实列,并给数据绑上set和get方法,当我们改变data中的数据的时候,set会侦听到data发生了变化,从而改变vm实列上的数据,再去渲染页面,当客户输入的时候,改变的也不会是data中的数据,而是vm实列上的数据
5.响应式设计
同时setter和getter能够让vue追踪依赖,每个组件实例都对应一个 watcher 实例,它会在组件渲染的过程中把“接触”过的数据 property 记录为依赖。之后当依赖项的 setter 触发时,会通知 watcher,从而使它关联的组件重新渲染。
注:这是个人的理解,也许有误差