下面是属性描述对象的一个实例。
{ value: 123, writable: false, enumerable: true, configurable: false, get: undefined, set: undefined }
属性描述对象提供6个元属性。
value
value存放该属性的属性值,默认为undefined。
writable
writable存放一个布尔值,表示属性值(value)是否可改变,默认为true。
enumerable
enumerable存放一个布尔值,表示该属性是否可枚举,默认为true。如果设为false,会使得某些操作(如for/in循环、Object.keys())跳过该属性。
configurable
configurable存放一个布尔值,表示“可配置性”,默认为true。如果设为false,将阻止某些操作改写该属性,例如,无法删除该属性,也不得改变该属性的属性描述对象(value属性除外)。也就是说,configurable属性控制了属性描述对象的可写性。
get
get存放一个函数,表示该属性的取值函数(getter),默认为undefined。
set
set存放一个函数,表示该属性的存值函数(setter),默认为undefined。