一、对象属性的类型
- 数据属性
- 访问器属性
二、对象属性的特性
数据属性的四个特性:
1. [[Configurable]]:默认为true,表示能否通过delete删除属性从而重新定义属性
2. [[Enumerable]]:默认为true,表示能否通过for-in循环返回属性
3. [[Writable]]:默认为true,表示能否修改属性的值
4. [[Value]]:默认为undefined,表示此属性的数据值
访问器属性的四个特性:
1. [[Configurable]]:默认为true,表示能否通过delete删除属性从而重新定义属性
2. [[Enumerable]]:默认为true,表示能否通过for-in循环返回属性
3. [[Get]]:在读取属性时调用的函数,默认为undefined
4. [[Set]]:在写入属性时调用的函数,默认为undefined
修改属性的特性:
1. 要使用Object.defineProperty(属性所在对象,属性名字,描述符对象)或Object.defineProperties(属性所在对象,要添加的属性对象),其中描述符对象的属性必须为configurable,enumerable,writable,value其中的一个或多个。
2. 但修改configurable为false后则不可修改会true
读取属性的特性:
1. 使用Object.getOwnPropertyDescriptor(属性所在的对象,要读取其描述符的属性名)
2. 若为访问器属性,则返回的对象有configurable,enumerable,get,set
3. 若为数据属性,则返回的对象有configurable,enumerable,writable,value