javascript對象

javascript對象

ID:39549620

大?。?7.50 KB

頁數(shù):19頁

時間:2019-07-06

javascript對象_第1頁
javascript對象_第2頁
javascript對象_第3頁
javascript對象_第4頁
javascript對象_第5頁
資源描述:

《javascript對象》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、使用預(yù)定義對象只是面向?qū)ο笳Z言的能力的一部分,它真正強(qiáng)大之處在于能夠創(chuàng)建自己專用的類和對象。ECMAScript擁有很多創(chuàng)建對象或類的方法。工廠方式原始的方式因?yàn)閷ο蟮膶傩钥梢栽趯ο髣?chuàng)建后動態(tài)定義,所有許多開發(fā)者都在JavaScript最初引入時編寫類似下面的代碼:varoCar=newObject;oCar.color="blue";oCar.doors=4;oCar.mpg=25;oCar.showColor=function(){alert(this.color);};???在上面的代碼中,創(chuàng)建對象car。然后給它設(shè)置幾個屬性:

2、它的顏色是藍(lán)色,有四個門,每加侖油可以跑25英里。最后一個屬性實(shí)際上是指向函數(shù)的指針,意味著該屬性是個方法。執(zhí)行這段代碼后,就可以使用對象car。不過這里有一個問題,就是可能需要創(chuàng)建多個car的實(shí)例。解決方案:工廠方式要解決該問題,開發(fā)者創(chuàng)造了能創(chuàng)建并返回特定類型的對象的工廠函數(shù)(factoryfunction)。例如,函數(shù)createCar()可用于封裝前面列出的創(chuàng)建car對象的操作:functioncreateCar(){varoTempCar=newObject;oTempCar.color="blue";oTempCar.do

3、ors=4;oTempCar.mpg=25;oTempCar.showColor=function(){alert(this.color);};returnoTempCar;}varoCar1=createCar();varoCar2=createCar();???在這里,第一個例子中的所有代碼都包含在createCar()函數(shù)中。此外,還有一行額外的代碼,返回car對象(oTempCar)作為函數(shù)值。調(diào)用此函數(shù),將創(chuàng)建新對象,并賦予它所有必要的屬性,復(fù)制出一個我們在前面說明過的car對象。因此,通過這種方法,我們可以很容易地創(chuàng)建ca

4、r對象的兩個版本(oCar1和oCar2),它們的屬性完全一樣。為函數(shù)傳遞參數(shù)我們還可以修改createCar()函數(shù),給它傳遞各個屬性的默認(rèn)值,而不是簡單地賦予屬性默認(rèn)值:functioncreateCar(sColor,iDoors,iMpg){varoTempCar=newObject;oTempCar.color=sColor;oTempCar.doors=iDoors;oTempCar.mpg=iMpg;oTempCar.showColor=function(){alert(this.color);};returnoTemp

5、Car;}varoCar1=createCar("red",4,23);varoCar2=createCar("blue",3,25);oCar1.showColor();//輸出"red"oCar2.showColor();//輸出"blue"???給createCar()函數(shù)加上參數(shù),即可為要創(chuàng)建的car對象的color、doors和mpg屬性賦值。這使兩個對象具有相同的屬性,卻有不同的屬性值。在工廠函數(shù)外定義對象的方法雖然ECMAScript越來越正式化,但創(chuàng)建對象的方法卻被置之不理,且其規(guī)范化至今還遭人反對。一部分是語義上的原

6、因(它看起來不像使用帶有構(gòu)造函數(shù)new運(yùn)算符那么正規(guī)),一部分是功能上的原因。功能原因在于用這種方式必須創(chuàng)建對象的方法。前面的例子中,每次調(diào)用函數(shù)createCar(),都要創(chuàng)建新函數(shù)showColor(),意味著每個對象都有自己的showColor()版本。而事實(shí)上,每個對象都共享同一個函數(shù)。有些開發(fā)者在工廠函數(shù)外定義對象的方法,然后通過屬性指向該方法,從而避免這個問題:functionshowColor(){alert(this.color);}functioncreateCar(sColor,iDoors,iMpg){varoT

7、empCar=newObject;oTempCar.color=sColor;oTempCar.doors=iDoors;oTempCar.mpg=iMpg;oTempCar.showColor=showColor;returnoTempCar;}varoCar1=createCar("red",4,23);varoCar2=createCar("blue",3,25);oCar1.showColor();//輸出"red"oCar2.showColor();//輸出"blue"?在上面這段重寫的代碼中,在函數(shù)createCar()之

8、前定義了函數(shù)showColor()。在createCar()內(nèi)部,賦予對象一個指向已經(jīng)存在的showColor()函數(shù)的指針。從功能上講,這樣解決了重復(fù)創(chuàng)建函數(shù)對象的問題;但是從語義上講,該函數(shù)不太像是對象的方法。所有這

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。