数据代理
<script>
let y={
name:'wzm',
age:22
}
Object.defineProperty(y,'sex'{
value:'男',
enumerable:true, //控制属性是否可以枚举
writable:true, //控制属性是否可以修改,默认为false
configurable:true. //控制属性是否可以删除,默认为false
})
</script>
例
<script>
let num=25
let y={
name:'wzm',
sex:'男'
}
Object.defineProperty(y,'age',{
// value:22,
// enumerable:true, //控制属性age可以枚举
// writable:true, //控制属性age可以修改
// configurable:false //控制age属性是否可以删除
get(){
//获取时调用get()
return num
},
//修改时调用set()
set(value){
num=value
}
})
for (let key in y) {
console.log(y[key]);
}
</script>
<script>
let obj={
name:'lzy',
age:18
}
const vm = new Vue({
el:'#app',
data:obj
})
vm.name='wzm';
console.log(data.name); // lzy
vm._data.name='wzm';
console.log(data.name);// wzm
//通过vm._data.name可以修改,原因在于_data中有getter和setter(数据劫持)
</script>