Js中的數據屬性和訪問器屬性


 

Js中的數據屬性和訪問器屬性

javaScript中,對象的屬性分為兩種類型:數據屬性和訪問器屬性。

一、數據屬性

1.數據屬性:它包含的是一個數據值的位置,在這可以對數據值進行讀寫。

2.數據屬性包含四個特性,分別是:

configurable:表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性,或能否把屬性修改為訪問器屬性,默認為true

 enumerable:表示能否通過for-in循環返回屬性

 writable:表示能否修改屬性的值

 value:包含該屬性的數據值。默認為undefined

如下面這個例子:創建一個對象person,打印出name屬性的特性的默認值

 

 

執行結果:

 

 

 

對幾個特性的測試:

 

 

測試結果:

 

 

3.修改數據屬性的默認特性

修改屬性屬性的默認特性要用到一個方法:Object.defineProperty()方法,這個方法有三個參數:屬性所在的對象,屬性名,一個描述符對象。

通過這個方法,我們可以來修改一個屬性的這4個特性。

如我們對剛剛上面的penson對象里面的name屬性的特性進行修改:

 

 

執行結果:

 

結果中可以看到,person對象的name屬性中的四個特性的值都相應改變了。同時后面的報錯是對configurable這個特性改為false后的局限的測試。

上面的注釋中是分別對各個屬性修改后的影響的測試。大家可以自己運行下試試效果。

 

二、訪問器屬性

1.訪問器屬性:這個屬性不包含數據值,包含的是一對get和set方法,在讀寫訪問器屬性時,就是通過這兩個方法來進行操作處理的。

2.訪問器屬性包含的四個特性

configurable:表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性,或能否把屬性修改為訪問器屬性,默認為false

 enumerable:表示能否通過for-in循環返回屬性,默認為false

 Get:在讀取屬性時調用的函數,默認值為undefined

 Set:在寫入屬性時調用的函數,默認值為undefined

這里要注意下,訪問器屬性不能直接定義,要通過Object.defineProperty()這個方法來定義。

下面來個例子,創建一個訪問器對象book,接着打印出其year訪問器屬性的特性描述並對其方法進行測試打印:

 

 

執行結果:

 

其他兩個特性configurable,enumerable的測試方式可以參照數據屬性的。不過在這特別說明下,關於configurable這個特性,因為訪問器屬性里面這個

特性默認值為false,如果程序后面需要對該屬性進行delete操作等,那就在定義訪問器屬性時,將這個特性設置為true,不然這個會導致后面一些報錯的問題。


免責聲明!

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



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