vue响应式数据原理分析
vue在初始化的时候,会传入一个data,data内部会默认把这个对象进行遍历,都是用Object.defineProperty这个方法重新定义这些属性。Object.defineProperty会对数据的获取和设置增加一个拦截的功能,做一些逻辑处理,这个逻辑就叫做依赖收集。
开始的时候会初始化用户传入的数据,调用一个initData方法。然后创建一个观测类(new Observer)对数据进行观测。如果传入对象,非数组,就会调用this.walk方法对对象进行处理,内部使用defineReactive这个方法重新定义对象属性,这个方法就是使用Object.defineProperty进行操作。检测到属性值发生变化后,会调用一个notify()方法,通知视图进行更新。