Object.defineProperty数据代理
<script>
let num = 30
let obj = {
name: "张三",
id: 1,
// age:20,
}
//Object.defineProperty 给对象定义属性的方法 默认情况下此方法声明的属性不可枚举、不可修改、不可删除
Object.defineProperty(obj, 'age', {
// value:18,
enumerable: true,//控制属性是否可以枚举,默认值时false
writable: true,//控制属性是否可以被修改,默认值时false
configurable: true,//控制属性是否可以删除,默认值时false
//注:访问age时先走get/set函数,在展示age的值
get() {//有人访问了obj.age时,get函数(getter)被执行,返回值就是age的值 (可以达age的值跟随着num的改变而改变)
console.log("有人访问了obj.age")
return num
},
set(value) {//有人修改obj.age时,set函数(setter)被执行,返回值就是age的值
console.log("有人修改了obj.age,且值为 " value)
num = value//这时age和num关联起来了,一方改了,另一方也会改了
}
}
)
console.log(obj);
</script>