阅读 102

js对象属性

一、对象属性的类型

  • 数据属性
  • 访问器属性

二、对象属性的特性

数据属性的四个特性:

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
复制代码