读取属性的特性

时间:2023-02-14 11:59:47


Object.getOwnPropertyDescriptor()方法,
* 两个参数:属性所在的对象和要读取器描述符的属性名,
* 返回值是一个对象,
* 如果是数据属性有:configurable,enumerable,writable,value.
* 如果是访问器属性有:configurable,enumerable,get,set.

<script>
var person = {};
Object.defineProperties(person, {
//使用defineProperties方法,所有属性的特性默认为false,如需使用需要设置为true
name: {
value: "hongbin"
},
_year:{
value:2000,
writable:true
},
age: {
value: 1,
writable:true
},
year: {
get() {
return this._year
},
set(v) {
if (v > this._year) {
this._year = v;
this.age += v - 2000;
}
}
}
});

person.year = 2020;

/*
* Object.getOwnPropertyDescriptor()方法,
* 两个参数:属性所在的对象和要读取器描述符的属性名,
* 返回值是一个对象,
* 如果是数据属性有:configurable,enumerable,writable,value.
* 如果是访问器属性有:configurable,enumerable,get,set.
* */
console.log(person);

let descriptor__year = Object.getOwnPropertyDescriptor(person,"_year");
console.log(descriptor__year);
//{value: 2020, writable: true, enumerable: false, configurable: false}

let descriptor_year = Object.getOwnPropertyDescriptor(person,'year');
console.log(descriptor_year);
//{enumerable: false, configurable: false, get: ƒ, set: ƒ}
console.log(descriptor_year.configurable);//false

</script>

读取属性的特性