对象是一个属性集合,对象的基本特征是属性名(name)和属性值(value)。ES5 增加了属性描述符,包括数据属性描述符(configurable enumerable writable value)和存取描述符(configurable enumerable get set)。两类描述符中的configurable和enumerable作用写法都一样。
通常用 Object.defineProperty / Object.defineProperties 来定义属性,不过只能定义数据属性描述符或者存取描述符中的一种,而不能同时定义两个,如:不能既定义value,又定义get/set方法。
数据属性描述符
var person = { name: "Jack" } /** 等价于如下定义方法 **/ var person = {}; Object.defineProperty(person, "name", { value: "Jack", writable: true, //为true时,该属性才能被“=”重新赋值,默认为false enumerable: true, //为true时,该属性才能被for in枚举,默认为false configurable: true //为true时,该属性才能被删除和修改描述符,默认为false })