声明对象
|
|
对象的属性
数据属性和访问器属性
数据属性的特性
[[Configurable]],默认为false[[Enumerable]],默认为false[[Writable]],默认为false[[Value]],默认为undefined- 注:使用字面量或Object()声明的对象,
[[Configurable]]/[[Enumerable]]/[[Writable]]的值默认为true,[[Value]]的值默认为undefined
访问器属性
- 访问器属性不包含数据值,它包含一对getter和setter函数
- 访问器属性有4个特性
[[Configurable]],默认为false[[Enumerable]],默认为false[[Get]],默认为false[[Set]],默认为false
- 访问器属性不能直接定义,必须通过
defineProperty来定义 读取是调用
[[Get]],写入时调用[[Set]]123456789101112var person3 = {_age: 12, name: 'XX'}Object.defineProperty(person3, 'age', {get: function () {return this._age},set: function (age) {this._age = agethis.name = 'BXX'}})console.log(person3.age) // 12person3.age = 13只定义
[[Get]],属性是只读的;只定义[[Set]],属性能写入,但是不能被读取,非严格模式下返回undefined
其他属性操作
- 定义多个属性:
Object.defineProperties() - 读取属性的特性:
Object.getOwnPropertyDescriptor(obj, propertyName)