js物件屬性

lerryteng發表於2018-05-25

一、物件屬性的型別

  • 資料屬性
  • 訪問器屬性

二、物件屬性的特性

資料屬性的四個特性:

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
複製程式碼

相關文章