資料屬性
- 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); } } } })
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/404298.html
標籤:JavaScript
