数据代理:一个对象对另一个对象的属性进行操作(读/写)
通俗来讲,数据代理是一个对象代理data对象中的属性的操作
1. 通过Object.defineProperty()把data对象的所有属性添加到这个对象上
2. 为每个添加到这个对象上的属性,都指定一个getter/setter
3. 在getter/setter内部去操作(读/写)data中对应的属性
以上三条可以理解为:
首先你创建了一个实例化vue对象,vm。
vm实例化底层有一个_data对象,_data对象里的数据来源于data。
但是你直接vm.data是访问不到data里面的属性的。
只能是通过vm._data.name或者是vm._data.address来访问
数据代理也可以理解为:把vm对象中没有的name和address属性添加,通过getter读取到_data中的值。
name和address的属性修改,通过setter映射到_data对象中,从而修改页面上的数据
数据代理的好处:更加方便操作data对象中的数据