数据代理
let person={
name:"chenduoduo",
sex:"girl"
}
Object.defineProperty(person,'age',{
value:23,//设置属性值
writtable:true,//设置属性是否可被修改,默认false
enumerable:true,//设置属性是否可被枚举
configurable:true,//设置属性是否可被删除
get(){ //当有人通过person读取age时,调用getter
return person.age;
},
set(val){
person.age=val;//当有人修改person.age时,将修改的val传给person.age
}
})
VUE中的数据代理
let data={
sex:"girl",
age:23
}
let vm={
name:"Chenduoduo",
data:data,
}
//将vm中的data属性传给vm的_data,相当于
vm._data=options.data=data
//通过vm代理_data _data一旦发生改变,data就会发生改变,页面就会发生变化
Object.defineProperty(vm,"sex",{get(){return _data.sex},set(val){_data.sex=val}});
Object.defineProperty(vm,"age",{get(){return _data.age},set(val){_data.age=val}});