- A+
所属分类:Web前端
数据属性
- configurable
- 属性是否可以通过 delete 删除并重新定义
- 是否可以修改他的特性(属性是否可以被配置)
- 是否可以把它改为访问器属性
- 默认 true
- enumerable 属性是否可以通过 for-in 循环返回 默认true
- writable 属性值是否可以被修改 默认 true
- value 属性的实际值
- 在属性被定义为不可配置之后,就不能再修改除了writable之后的值了!!!!
访问器属性
- configurable
- enumerable
- get 读取该属性时调用 get 并返回结果
- set (newvalue) 修改该属性时会将修改的值传入 set
对象方法
-
Object.defineProperty 定义单个属性
// 使用这种方法不定义 configurable enumerable writable时,会默认为false Object.defineProperty(obj,key,{ configurable:true, enumerable:true, writable:true, value:"value" }) // getter 和 setter 的使用 Object.defineProperty(obj,key,{ // get会在该属性被读取时调用 get(){ return this.key }, // set 会在该属性被修改时调用 set(newValue){ this.key = newValue } })
-
Object.defineProperties 定义多个属性
let book = {} // 使用这种方法不定义 configurable enumerable writable时,会默认为false Object.defineProperties(book,{ edition:{ value:1, writable:true }, year_:{ value:2017 }, year:{ get(){ return this.year_ }, set(newValue){ if(newValue > 2017){ this.year_ = newValue; this.edition += (newValue - 2017) console.log(this.edition); } } } })