JavaScript中對象property的讀取和寫入方法介紹,javascriptproperty

來源:互聯網
上載者:User

JavaScript中對象property的讀取和寫入方法介紹,javascriptproperty

JavaScript中,可以通過點號操作符”.”或者中括弧操作符”[]“來對對象的property進行讀取和寫入:


複製代碼 代碼如下:
var o = {x:1, y:2};
console.log(o.x);//1
console.log(o["y"]);//2
o.y = 7;
console.log(o["y"]);//7


值得注意的是,如果使用中括弧操作符,則操作符內的實值型別必須是string,或者能夠轉換成string的運算式:


複製代碼 代碼如下:
console.log(o[y]);//ReferenceError: y is not defined
var v = "y";
console.log(o[v]);//7


與Java語言不同的是,JavaScript中對象的property可以動態添加或刪除。當對某個property進行賦值操作時,如果該property不存在,JavaScript會在對象中動態添加此property:


複製代碼 代碼如下:
o.z = 99;
console.log(o);//Object {x=1, y=7, z=99}

 

原型繼承鏈中property的讀取

 

JavaScript中所有的對象均有一個prototype原型對象,並從該原型對象中繼承property;因此,JS中一個對象的property分成兩大類:

1.對象自身所擁有的property(“Own Property”)。
2.從原型對象處繼承而來的property。

當讀取對象的property時,所遵循的規則如下:

1.從對象自身的property集合(“Own Property”)中搜尋需要讀取的property;如果可以搜尋到,則直接讀取該property並返回其值。
2.如果無法從對象自身的property集合(“Own Property”)中搜尋到該property,那麼則從對象的prototype原型鏈中繼續進行搜尋,直至搜尋到該property並返回其值。
3.如果無法從對象自身的property集合(“Own Property”)中搜尋到該property,也無法從對象的所有prototype對象中搜尋到該property,則返回undefined。

原型繼承鏈中property的寫入

在對JavaScript對象的property進行寫入時,所遵循的規則如下:

1.如果對象自身有該property,且該property可寫,則將新值寫入該property。如果該property唯讀,則報錯。
2.如果對象自身沒有該property,且其所有的prototype對象中也不存在該property,則將此property添加到該對象中。
3.如果對象自身沒有該property,但其prototype對象中存在該property且可寫,那麼JS會在對象中建立這個property;也就是說,該對象覆寫了其prototype對象中的這個property。prototype對象中此property值不變。
4.如果對象自身沒有該property,但其prototype對象中存在該property且唯讀,則報錯。
5.如果對象自身沒有該property,但其prototype對象中存在該property的setter方法,那麼JS會調用該prototype對象中的setter方法。值得注意的是,在運行setter方法時,如果涉及到變數賦值,那麼賦值操作將作用在對象自身上,而prototype對象不會有任何改動。對於這一行為,可以理解為:對象從prototype處繼承了setter函數並加以執行。

從上述規則中可以發現,如果對property的賦值操作成功,那麼最後被修改的永遠是對象自身,其prototype原型對象不會有任何改動。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.