数据代理:通过一个对象代理对另一个对象中属性的操作(读写)
结论:Vue中通过vm(实例对象)来代理data中的所有数据
1.首先创建了一个vm对象
2.然后 vue就给vm准备了一些数据,当然也将data存放到_data属性中,这里可以理解data和_data是一个东西,data.name=_data.name...
3.接着vue会将_data中的name属性拿一份给vm对象,以便编码方便
3.1通过getter()方法内部获取_data中的name属性给vm中的name
3.2当修改vm.name时候,用过setter()方法内部将修改结果映射到_data中的name属性。
于是就实现了vm对data数据的d代理。
getter()方法和setter()方法都是Object.defineProperty的方法。
实际上在_data中对data中的数据做了数据劫持,以便DOM能够实时动态的获取data中的属性变化
总结: