根據(jù)MDN的屬性訪問器可知:
對象可以使用 obj.propertyName / obj["propertyName"]來訪問屬性。
而數(shù)組的屬性,可以通過下標來訪問。(來源忘了,反正就是知道)
但我發(fā)現(xiàn):對于非數(shù)組對象,也可以使用下標來訪問對象的屬性(盡管這個下標我也不知道是什么,就是亂寫的),這是為什么呢?
var a = [],i = 0;
var obj={
a:12,
b:34.56,
c:true,
d:"hello",
e:null,
f:undefined,
g:{}
};
for (a[i] in obj) {
console.log("a[" + i + "]=" + a[i] + ",obj[" + i + "]=" + obj[a[i]]);
i++;
}
輸出如下:
a[0]=a,obj[0]=12
a[1]=b,obj[1]=34.56
a[2]=c,obj[2]=true
a[3]=d,obj[3]=hello
a[4]=e,obj[4]=null
a[5]=f,obj[5]=undefined
a[6]=g,obj[6]=[object Object]
對象可以使用 obj.propertyName / obj["propertyName"]來訪問屬性。
而數(shù)組的屬性,可以通過下標來訪問
對于非數(shù)組對象,也可以使用下標來訪問對象的屬性
這三句話都沒錯,其實核心就第一句話。
對象可以使用 obj.propertyName / obj["propertyName"]來訪問屬性。
因為數(shù)組是對象,所以
數(shù)組可以使用 obj.propertyName / obj["propertyName"]來訪問屬性。
但是因為propertyName
需要是字符串,所以arr.1
會報錯,這種情況下,就要用第二種, obj["propertyName"]
,在這里就是arr['1']
,當然arr[1]
也是可以的,因為[]
里的內(nèi)容如果不是字符型會被自動轉(zhuǎn)為字符型,如果是變量就會求值,然后轉(zhuǎn)為字符型。
基礎知識看JavaScript權(quán)威指南-第6版-中-掃描版-補吧,網(wǎng)上的知識七七八八,參差不齊,沒必要看。
終于找到這個知識點的出處了,見這里
在 JavaScript 1.0 中,你可以通過名稱或序號訪問一個屬性。但是在 JavaScript 1.1 及之后版本中,如果你最初使用名稱定義了一個屬性,則你必須通過名稱來訪問它;而如果你最初使用序號來定義一個屬性,則你必須通過索引來訪問它。
這個限制發(fā)生在你通過構(gòu)造函數(shù)創(chuàng)建一個對象和它的屬性(就象我們之前通過 Car 對象類型所做的那樣)并且顯式地定義了單獨的屬性(如 myCar.color = "red")之時。如果你最初使用索引定義了一個對象屬性,例如 myCar[5] = "25",則你只可能通過 myCar[5] 引用它。
這條規(guī)則的例外是從與HTML對應的對象,例如 forms 數(shù)組。對于這些數(shù)組的元素,你總是既可以通過其序號(依據(jù)其在文檔中出現(xiàn)的順序),也可以按照其名稱(如果有的話)訪問它。舉例而言,如果文檔中的第二個 <form> 標簽有一個 NAME 屬性且值為 "myForm",訪問該 form 的方式可以是 document.forms[1],document.forms["myForm"]或 document.myForm。
var myCar=new Object();
myCar.make="Ford";
myCar.model= "Mustang";
myCar.year = 1969;
myCar["hum"] = 100;
console.log(myCar["0"]);
console.log(myCar["1"]);
console.log(myCar["2"]);
console.log(myCar["hum"]);
console.log(myCar.hum);
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務機構(gòu),發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。