javascript對(duì)象的特點(diǎn):1、“鍵值對(duì)”列表中的最后一個(gè)屬性要以逗號(hào)結(jié)尾;2、使用const聲明的對(duì)象,其數(shù)據(jù)是可以被修改的;3、屬性名可以是“[值]”方式;4、“in”運(yùn)算符左邊必須是屬性名,右邊是對(duì)象名,返回的是布爾值。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
js對(duì)象的九大特點(diǎn)
第一:“鍵值對(duì)”列表中的最后一個(gè)屬性要以逗號(hào)結(jié)尾
這個(gè)逗號(hào)有個(gè)高大上的名字:尾隨逗號(hào)(trailing)
原因應(yīng)該就是為了規(guī)范,簡(jiǎn)單來(lái)說(shuō)就是為了美觀。
第二:使用const聲明的對(duì)象,其數(shù)據(jù)是可以被修改的
該對(duì)象內(nèi)部的屬性是可以被修改的。
對(duì)對(duì)象整體進(jìn)行更改,是不行滴。
第三:多詞屬性名來(lái)?yè)v亂
鍵值對(duì)中的鍵,也就是name:"zhangsan"中的name如果變成“new name”。
名字由一個(gè)單詞變?yōu)槎鄠€(gè)單詞,會(huì)使得有些事物發(fā)生改變。
- 點(diǎn)不能使用了。原先是person.name,現(xiàn)在可不能寫(xiě)person.new name。
- 應(yīng)該寫(xiě)person["new name"]
遇到多詞名稱(chēng),記住三點(diǎn):
-
用括號(hào)
-
名字加引號(hào)
-
括號(hào)內(nèi)可以直接寫(xiě)字符串,也可以寫(xiě)變量,因?yàn)樽兞恐幸部梢詫?xiě)字符串
第四:屬性名還有一種古怪的方式,方括號(hào)[]
let name="apple" var o={ [name]:5, } alert(o.apple);
記住,方括號(hào)中存放的不是確定的,死板的固定值,而是變量,變量懂嗎?
靈活多變的那種。
第五:特殊情況下,屬性值可以簡(jiǎn)寫(xiě)
function makeUser(name, age) { return { name: name, age: age, // ……其他的屬性 }; } let user = makeUser("John", 30); alert(user.name); // John
觀察可以得到,屬性名和變量名一樣。
此時(shí),可以換個(gè)寫(xiě)法:
變化之前:name:name
變化之后:name
有啥意義?就是圖個(gè)方便,某種意義上來(lái)說(shuō)還增加了初學(xué)者的負(fù)擔(dān),所以事物皆有兩面性,無(wú)事無(wú)非。
第六:屬性名稱(chēng)可以隨便起
不用再擔(dān)心關(guān)鍵字不能用了(為什么一定要用關(guān)鍵字?閑著蛋疼)
記住一點(diǎn):__proto__
的屬性。我們不能將它設(shè)置為一個(gè)非對(duì)象的值
第七:“in”的作用
"key" in object
-
屬性名 在 對(duì)象中。
in左邊必須是屬性名,右邊是對(duì)象名,返回的是布爾值true或者false。
屬性名通常是字符串,但也有可能是變量,變量中存放的還是字符串。
所以還是字符串在起作用。
為什么要in?
因?yàn)榕聈ndefined來(lái)?yè)v亂。
第八:for…in循環(huán)
語(yǔ)法格式:
for (key in object) { // 對(duì)此對(duì)象屬性中的每個(gè)鍵執(zhí)行的代碼 }
其中,除了in左邊的key不確定之外(可以用其他單詞來(lái)代替),其他幾個(gè)單詞的結(jié)構(gòu)都是確定的。
側(cè)面反映了,這個(gè)語(yǔ)句中重要的是“到底是要遍歷哪一個(gè)對(duì)象”。
第九:對(duì)象屬性的順序
一個(gè)概念:整數(shù)屬性名
屬性名是整數(shù)字符串
另一個(gè)概念:整數(shù)字符串
可以被轉(zhuǎn)化為整數(shù)的字符串
“1”,“2”等就是整數(shù)字符串。
記?。?/p>
- 當(dāng)屬性名不是整數(shù)字符串,遍歷對(duì)象輸出數(shù)據(jù)時(shí)的順序按照創(chuàng)建時(shí)的順序
- 當(dāng)屬性名是整數(shù)字符串,按照從小到大的順序。
【