var book = {};
Object.defineProperties(book, {
_year: {
value: 2004
},
edition: {
value: 1
},
year: {
get: function(){
return this._year;
},
set: function(newValue){
if (newValue > 2004) {
this._year = newValue;
this.edition += newValue - 2004;
}
}
}
});
var descriptor = Object.getOwnPropertyDescriptor(book, "_year");
alert(descriptor.value); //2004
alert(descriptor.configurable); //false
alert(typeof descriptor.get); //"undefined"
var descriptor = Object.getOwnPropertyDescriptor(book, "year");
alert(descriptor.value); //undefined
alert(descriptor.enumerable); //false
alert(typeof descriptor.get); //"function"
以下这两行看不懂
alert(descriptor.configurable); //false
alert(descriptor.enumerable); //false
对象默认的可配置属性和可枚举属性是true吧
示例代码未设置这两个属性,默认的应该为true吧
PS:红宝书6.1.3(24印143页)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这个没错,但是这个指的是不使用
defineProperty
或者defineProperties
的时候,使用它们的时候,那两个属性默认为false
。defineProperties
这个API手册里面有说明,默认为false。
红包书上说的是,对于直接在对象上定义的属性,他们默认值为true;类似这样,
`
`
我抽出了我的红包书,对,他就是说的直接定义在对象上的属性,configurable特性默认为true,不行,你可以输出‘a’,'b','c'的configurable值