對象的屬性類型詳解


 

1. 屬性類型

    對象的屬性類型,描述了屬性(property)的各種特征。

  ECMAScript中有兩種屬性類型:數據屬性和訪問器屬性。

 

1.1  數據屬性。

  數據屬性包含一個數據值的位置。在這個位置可以讀取和寫入值。數據屬性有4個描述其行為的特性:

  • [configurable]: 表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問器屬性。
  • [enumerable]: 表示能否通過for-in循環返回屬性。
  • [writable]: 表示能否修改屬性的值。
  • [value]: 包含這個屬性的數據值。 

要修改屬性的特性,必須使用ECMAScript5的Object.defineProperty()方法。這個方法接受三個參數:屬性所在的對象、屬性的名字和一個描述符對象。其中,描述符(descriptor)對象的屬性必須是:configurable、enumerable、writable和value。設置其中的一個或多個值,可以修改對應的特性值。

 

1.2 訪問器屬性

訪問器屬性不包含數據值:它們包含一對getter和setter函數;訪問器屬性有如下4個特性:

  • [configurable]: 同上。
  • [enumerable]: 同上。
  • [get]: 讀取屬性時調用的函數。
  • [set]: 寫入屬性時調用的函數。

訪問器屬性不能直接定義,必須使用Object.defineProperty()來定義。 

 

2. 定義多個屬性

ECMAScript5定義了一個Object.defineProperties()方法,利用這個方法可以通過描述符一次定義多個屬性。這個方法接收兩個對象參數:第一個對象是要添加和修改其屬性的對象,第二個對象的屬性與第一個對象中葯添加或修改的屬性一一對應。

 

3. 讀取屬性的特性

ECMAScript5的Object.getOwnPropertyDescriptor()方法,可以取得給定屬性的描述符。這個方法接收兩個參數:屬性所在的對象和要讀取其描述符的屬性名稱。返回值是一個對象,如果是訪問器屬性,這個對象的屬性有configurable、enumerable、get和set;如果是數據屬性,這個對象的屬性有configurable、enumerable、writable和value。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM