理解javascript的对象
对象的定义:”无序属性的结合,其属性可以包含基本值,对象或者函数”
创建一个自定义对象最简单的方式
创建一个object实例
1 | let person = new Object(); |
也可以使用对象字面量来创建自定义对象
1 | let person = { |
对象的属性类型
要修改属性的默认的特性,必须使用ES5提供的Object.defineProperty()
方法。这个方法接收三个参数:属性所在的对象,属性的名字和一个描述符对象。
- 数据属性
- [[Configurable]]:表示能否通过delete删除属性而从新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。默认值为true
- [[Enumerable]]:表示能否通过for-in循环返回属性。默认值为true
- [[Writable]]:表示能否修改属性的值。默认值为true
- [[Value]]:包含这个属性的数据值。默认值为undefined
值得注意的是:可以多次调用Object.defineProperty()方法修改同一属性,但是把Configurable设置为false之后就会有限制了。
- 访问器属性
访问器属性不能直接定义,必须使用Object.defineProperty()来定义- [[Configurable]]:表示能否通过delete删除属性而从新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性。这个属性默认值为true
- [[Enumerable]]:表示能否通过for-in循环返回属性。默认值为true
- [[Get]]:在读取属性时调用的函数。默认值为undefined
- [[Set]]:在写入属性时调用的函数。默认值为undefined
定义多个属性
在ES5可以使用Object.defineProperties()方法来定义多个属性
读取属性的特性
使用ES的Object.getOwnPropertyDescriptor()方法,可以取得给定属性的描述符。这个方法接收两个参数:属性所在对象和要读取其描述符的属性名称。