為什麼JavaScript要分資料屬性和訪問器屬性?

時間 2021-06-04 04:48:10

1樓:troy351

// 宣告乙個物件

const

obj=

{};// 資料屬性

Object

.defineProperty

(obj

,'data',);

// 等價於

obj.

data=0

;// 訪問器屬性

Object

.defineProperty

(obj

,'accessor',,

get()

,configurable

:true

,enumerable

:true

});回答問題

一樣2. 因為資料屬性儲存值,訪問器屬性不儲存值(由上方例子可以看到,accessor實際是在操作data。換句話說,此時data屬性和accessor屬性永遠是相等的)。

這就意味著:

value和set/get不能共存。因為有了set/get同時又有value,那讀取是讀value還是get?寫入是寫value還是set?

訪問器屬性沒有writable,因為其實際不儲存值也就無所謂能否寫入。實際上只設定get不設定set就無法賦值了

3. 參考最上方的例子,obj上既有資料屬性又有訪問器屬性。

結果如圖

JavaScript為什麼要加 0 呢?作用是什麼?

廖昆勇 因為除了getById之外,其他返回獲取dom的方式都是返回array,即使整個頁面只有乙個元素用到某個class,也會返回array,想要獲取該元素的話,就是等於從返回的array裡獲取第乙個元素,所以要加 0 咖啡貓和程式設計師 因為你寫的是getElements不是getElement...

人為什麼要分年齡?為什麼要分美醜?

夏天的書 我想人生下來是必有一死的,人無論是樂觀悲觀也罷,經常是對自己的人生有著這樣那樣的美好期待,但是只有希望和憧憬是不夠的 偶爾會在睡前反思自己,離我的夢想還有多遠?我還有多少時間來著。如果我是長生的,那麼我覺得也許我都不會想要實現自己的夢想了,也不想要努力或者十分辛苦的克服困難,解決問題了。正...

為什麼JavaScript裡面typeof null 的值是 object ?

自由的囚徒 這是JS語言本身的乙個bug。不同的物件在底層都表示為二進位制,在js中二進位制前三位都為0的話會被判斷為object型別,null的二進位制表示全是0,自然前三位也是0,所以執行typeof時返回 object 阿布丁 說句人話,不說書裡的鬼話 因為 所有引用型別的名字是乙個指標,指的...