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