亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2014年12月30日 09:44:22   投稿:junjie  
這篇文章主要介紹了JavaScript中對象property的讀取和寫入方法介紹,本文講解了原型繼承鏈中property的讀取、原型繼承鏈中property的寫入等內(nèi)容,需要的朋友可以參考下

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


復(fù)制代碼 代碼如下:

var o = {x:1, y:2};
console.log(o.x);//1
console.log(o["y"]);//2
o.y = 7;
console.log(o["y"]);//7


值得注意的是,如果使用中括號操作符,則操作符內(nèi)的值類型必須是string,或者能夠轉(zhuǎn)換成string的表達(dá)式:


復(fù)制代碼 代碼如下:

console.log(o[y]);//ReferenceError: y is not defined
var v = "y";
console.log(o[v]);//7


與Java語言不同的是,JavaScript中對象的property可以動態(tài)添加或刪除。當(dāng)對某個property進(jìn)行賦值操作時,如果該property不存在,JavaScript會在對象中動態(tài)添加此property:


復(fù)制代碼 代碼如下:

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。

當(dāng)讀取對象的property時,所遵循的規(guī)則如下:

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

原型繼承鏈中property的寫入

在對JavaScript對象的property進(jìn)行寫入時,所遵循的規(guī)則如下:

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會調(diào)用該prototype對象中的setter方法。值得注意的是,在運行setter方法時,如果涉及到變量賦值,那么賦值操作將作用在對象自身上,而prototype對象不會有任何改動。對于這一行為,可以理解為:對象從prototype處繼承了setter函數(shù)并加以執(zhí)行。

從上述規(guī)則中可以發(fā)現(xiàn),如果對property的賦值操作成功,那么最后被修改的永遠(yuǎn)是對象自身,其prototype原型對象不會有任何改動。

相關(guān)文章

  • JS中style.display和style.visibility的區(qū)別實例說明

    JS中style.display和style.visibility的區(qū)別實例說明

    下面的例子說明了這種區(qū)別:在這個例子中,divContent1和divContent2隱藏的時候用的是style.display=none,這時候,后面的div會向上移動,占據(jù)已經(jīng)隱藏的div的空間。divContent3和divContent4用的是style.visibility=hidden來隱藏,但是其隱藏后仍然占據(jù)原來的空間
    2013-03-03
  • CSS3 動畫卡頓性能優(yōu)化的完美解決方案

    CSS3 動畫卡頓性能優(yōu)化的完美解決方案

    今天小編就為大家分享一篇關(guān)于css3 動畫卡頓性能優(yōu)化的完美解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-09-09
  • JavaScript模塊化開發(fā)之SeaJS

    JavaScript模塊化開發(fā)之SeaJS

    SeaJS是一個遵循CommonJS規(guī)范的JavaScript模塊加載框架,可以實現(xiàn)JavaScript的模塊化開發(fā)及加載機制,本文給大家介紹JavaScript模塊化開發(fā)之SeaJS,需要的朋友參考下
    2015-12-12
  • js操作label給label賦值及取label的值示例

    js操作label給label賦值及取label的值示例

    給label賦值以及取label的值,取值及賦值代碼如下,感興趣的朋友可以參考下
    2013-11-11
  • 分享JS數(shù)組求和與求最大值的方法

    分享JS數(shù)組求和與求最大值的方法

    數(shù)組求和在項目需求中還是挺常見的,比如購物車金額統(tǒng)計、人員的前臺統(tǒng)計等等。今天小編先是給大家分享了JS數(shù)組求和的兩個方法,而后又用實例演示js數(shù)組求和,并求出數(shù)組中的最大值,一起來看看吧。
    2016-08-08
  • JavaScript實現(xiàn)無縫輪播圖的示例代碼

    JavaScript實現(xiàn)無縫輪播圖的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript語言實現(xiàn)無縫輪播功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 通過js為元素添加多項樣式,瀏覽器全兼容寫法

    通過js為元素添加多項樣式,瀏覽器全兼容寫法

    這篇文章主要介紹了通過js為元素添加多項樣式,瀏覽器全兼容寫法,需要的朋友可以參考下
    2014-08-08
  • js定時器實例分享

    js定時器實例分享

    本篇文章主要介紹了js 定時器的語法、實例、與實現(xiàn)代碼分析。具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • JavaScript希爾排序、快速排序、歸并排序算法

    JavaScript希爾排序、快速排序、歸并排序算法

    這篇文章主要為大家詳細(xì)介紹了JavaScript希爾排序、快速排序、歸并排序算法,感興趣的朋友可以參考一下
    2016-05-05
  • JavaScript調(diào)用ajax獲取文本文件內(nèi)容實現(xiàn)代碼

    JavaScript調(diào)用ajax獲取文本文件內(nèi)容實現(xiàn)代碼

    這篇文章主要介紹了JavaScript調(diào)用ajax獲取文本文件內(nèi)容的方法,需要的朋友可以參考下
    2014-03-03

最新評論