//number 和person是两个东西,靠defineProperty来关联
let number = '';
let person = {
name:"张三",
sex:"男",
// age:18
}
Object.defineProperty(person,"age",{
// value:18,
// enumerable:true,//控制属性是否可以枚举默认是false
// writable:true, //控制属性是否可以被修改,默认值是false
// configurable:true, //控制属性是否可以被删除 ,默认false
//当有人读取person的age属性的时,get函数(getter)就会调用,且返回的是age的值
get:function(){
console.log('有人读取age属性了');
return number;
},
// 当有人读取person的age属性的时,set函数(setter)就会调用,且返回的是age的值
set(value){
number = value;
console.log('有人修改了age的属性,且值是',value);
}
})
//不可枚举 age的值出不来
for(let key in person){
console.log('@',person[key]);
}
// console.log(Object.keys(person)); //不可枚举 age的值出不来
console.log(person);
number和person是两个互不关联的内容,通过set设置指定的值,再用get值返回出来
通过set设置指定的值返回给number
再用get值返配合 Object.definePropert()return指定值出来