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

 

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

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

1、數據屬性

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

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

configurable:表示可否經過delete刪除屬性從而從新定義屬性,可否修改屬性的特性,或可否把屬性修改成訪問器屬性,默認爲truespa

 enumerable:表示可否經過for-in循環返回屬性對象

 writable:表示可否修改屬性的值blog

 value:包含該屬性的數據值。默認爲undefinedip

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

 

 

執行結果:it

 

 

 

對幾個特性的測試:table

 

 

測試結果:

 

 

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

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

經過這個方法,咱們能夠來修改一個屬性的這4個特性。

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

 

 

執行結果:

 

結果中能夠看到,person對象的name屬性中的四個特性的值都相應改變了。同時後面的報錯是對configurable這個特性改成false後的侷限的測試。

上面的註釋中是分別對各個屬性修改後的影響的測試。你們能夠本身運行下試試效果。

 

2、訪問器屬性

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,否則這個會致使後面一些報錯的問題。

相關文章
相關標籤/搜索