数据代理:通过一个对象代理对另一个对象中属性的操作(读/写)
要说vue的数据代理就要先了解一个方法:object.defineproperty()
它的作用是:给一个对象添加属性。
例如 有一个person对象有name,sex属性,要添加age属性。
let person = {
name:"张三",
sex:"男"
};
Object.defineProperty(person,"age",{
value:18
})
虽然我们用这个方法添加了age属性。但他与直接在对象上添加属性不同。
我们在控制面板上输入Object.keys(person)得到的是 ['name', 'sex'] 没有age。
这说明用Object.defineProperty()添加的属性默认不能被遍历。可以使用enumerable:true 更改为可以被枚举。
同时还有
writable 控制属性是否可以被更改 默认为false