資源描述:
《javascript類型系統(tǒng)之object詳解_javascript技巧》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、JavaScript類型系統(tǒng)之Object詳解前面的話在javascript對(duì)象為王;Javascript里的幾乎所有東西都是對(duì)象或者用起來像對(duì)象。理解了對(duì)象,就理解了Jeivascripto在javascript中,弓I用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)據(jù)和功能組織在一起,它也常被稱為類。引用類型冇時(shí)也被稱為對(duì)象定義,因?yàn)樗鼈兠枋龅氖且活悓?duì)象所具冇的屈性和方法大部分引用類型的值都是Object類型的實(shí)例;而且‘Object也是javascript屮使用最多的一個(gè)類型。雖然Object實(shí)例不具備多少功能,但對(duì)于在應(yīng)用程序中存儲(chǔ)和傳輸數(shù)據(jù),它們確實(shí)是非
2、常理想的選擇創(chuàng)建對(duì)象有兩種Object類型的創(chuàng)建方法[l]Object構(gòu)造函數(shù)varperson二newObject();//如果不給構(gòu)造函數(shù)傳遞參數(shù)可以不加括號(hào)varperson=newObject;person,name='bai";person,age二29;//創(chuàng)建無屬性的空對(duì)象varcodyl=newObject();varcody2=newObject(undefined);varcody3=newObject(null);console.log(typeofcodyl,typeofcody2,typeofcody3);//objec
3、tobjectobject//創(chuàng)建string、number、arrayxfunction、boolean、regexconsole,log(newObjectCfoo,));console,log(newObject(1));console,log(newObject([]));console.log(newObject(function(){}));console.log(newObject(true));console,log(newObject(/bbt[a~z]+b/));[注意]Object()構(gòu)造函數(shù)本身就是對(duì)彖,構(gòu)造函數(shù)是基于
4、Function構(gòu)造函數(shù)創(chuàng)建的對(duì)彖[2]使用對(duì)象字面量Javascript捉供了叫做字而量的快捷方式,用丁?創(chuàng)建大多數(shù)原生對(duì)象值。使用字面量只是隱藏了與使用new操作符相同的基本過程varperson二{name:'bai",age:29,5:true[注意]在對(duì)象字面量中使用逗號(hào)來分隔不同的屬性,但是在最后一個(gè)屬性后面添加逗號(hào),會(huì)在IE7-導(dǎo)致錯(cuò)誤使用對(duì)象字面量的方法來定義對(duì)象,屬性名會(huì)自動(dòng)轉(zhuǎn)換成字符串〃同上varperson={name:bai,'age,:29,'5,:true};如果留空其花括號(hào),則口J以定義只包含默認(rèn)屬性和方法的對(duì)象//
5、等價(jià)于varperson=newObject();varperson二{};[tips]使用對(duì)象字面量封裝多個(gè)可選參數(shù)functiondisplayInfo(args){varoutput=八;if(typeofargs,name=='string"){output+二'name:'+args,name+'‘;}if(typeofargs,age=='number,){output+二'Age:'+args,age+,,;}console,log(output);};displayInfo({name:'Nicholas',age:29}
6、);displaylnfo({name:'match'});以上這種傳遞參數(shù)的模式最適合需耍向函數(shù)傳入大量可選參數(shù)的情況。-?般來說,雖然命名參數(shù)容易處理,但有多個(gè)可選參數(shù)時(shí)就會(huì)不夠靈活。I大I此,對(duì)于必須值使用形參,而使用對(duì)彖字而量來封裝多個(gè)可選參數(shù)設(shè)置對(duì)象有兩種訪問對(duì)彖屬性的方法,可以用點(diǎn)表示法或中描號(hào)表示法獲取、設(shè)置或更新對(duì)象的屬性中括號(hào)法的兩個(gè)優(yōu)點(diǎn)分別是可以通過變量來訪問屬性、屬性名稱可以為Javascript無效標(biāo)識(shí)符[注意]變量屮可以存在屮文,因?yàn)殄南喈?dāng)于字符,與英文字符同樣對(duì)待,因此可以寫成person.口或personf口’]v
7、armyObject二{123:,zcro,,class:'foo'};console,log(myObjectf123,],myObjectfclass,]);//'zero,'foo,console,log(myObject.123);//報(bào)錯(cuò)方括號(hào)小的值若是非字符串類型會(huì)使用String()隱式轉(zhuǎn)換成字符串再輸岀;如果是字符串類型,若有引號(hào)則原值輸出,否則會(huì)被識(shí)別為變量,若變量未定義,則報(bào)錯(cuò)person[0]二1;//[]中的數(shù)字不會(huì)報(bào)錯(cuò),而是自動(dòng)轉(zhuǎn)換成字符串person[a]=1;//□中符合變量命名規(guī)則的元素會(huì)被當(dāng)成變量,變量未被定義,
8、而報(bào)錯(cuò)person]'']=2;//□中的空字符串不會(huì)報(bào)錯(cuò),是實(shí)際存在的且可以調(diào)用,但不會(huì)在控制臺(tái)右側(cè)的集合屮顯示person[unde