javascript(JS)如何創(chuàng)建類和對(duì)象.doc

javascript(JS)如何創(chuàng)建類和對(duì)象.doc

ID:32020332

大小:91.00 KB

頁(yè)數(shù):36頁(yè)

時(shí)間:2019-01-30

javascript(JS)如何創(chuàng)建類和對(duì)象.doc_第1頁(yè)
javascript(JS)如何創(chuàng)建類和對(duì)象.doc_第2頁(yè)
javascript(JS)如何創(chuàng)建類和對(duì)象.doc_第3頁(yè)
javascript(JS)如何創(chuàng)建類和對(duì)象.doc_第4頁(yè)
javascript(JS)如何創(chuàng)建類和對(duì)象.doc_第5頁(yè)
資源描述:

《javascript(JS)如何創(chuàng)建類和對(duì)象.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

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

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

3、oTempCar.showColor=function(){alert(this.color);};returnoTempCar;}varoCar1=createCar();varoCar2=createCar();???在這里,第一個(gè)例子中的所有代碼都包含在createCar()函數(shù)中。此外,還有一行額外的代碼,返回car對(duì)象(oTempCar)作為函數(shù)值。調(diào)用此函數(shù),將創(chuàng)建新對(duì)象,并賦予它所有必要的屬性,復(fù)制出一個(gè)我們?cè)谇懊嬲f(shuō)明過(guò)的car對(duì)象。因此,通過(guò)這種方法,我們可以很容易地創(chuàng)建car對(duì)象的兩個(gè)版本(oCar1和oCar2),它們的屬性完全一樣。為函數(shù)傳遞參

4、數(shù)我們還可以修改createCar()函數(shù),給它傳遞各個(gè)屬性的默認(rèn)值,而不是簡(jiǎn)單地賦予屬性默認(rèn)值:functioncreateCar(sColor,iDoors,iMpg){varoTempCar=newObject;oTempCar.color=sColor;oTempCar.doors=iDoors;oTempCar.mpg=iMpg;oTempCar.showColor=function(){alert(this.color);};returnoTempCar;}varoCar1=createCar("red",4,23);varoCar2=createCar

5、("blue",3,25);oCar1.showColor();//輸出"red"oCar2.showColor();//輸出"blue"???給createCar()函數(shù)加上參數(shù),即可為要?jiǎng)?chuàng)建的car對(duì)象的color、doors和mpg屬性賦值。這使兩個(gè)對(duì)象具有相同的屬性,卻有不同的屬性值。在工廠函數(shù)外定義對(duì)象的方法雖然ECMAScript越來(lái)越正式化,但創(chuàng)建對(duì)象的方法卻被置之不理,且其規(guī)范化至今還遭人反對(duì)。一部分是語(yǔ)義上的原因(它看起來(lái)不像使用帶有構(gòu)造函數(shù)new運(yùn)算符那么正規(guī)),一部分是功能上的原因。功能原因在于用這種方式必須創(chuàng)建對(duì)象的方法。前面的例子中,每次調(diào)

6、用函數(shù)createCar(),都要?jiǎng)?chuàng)建新函數(shù)showColor(),意味著每個(gè)對(duì)象都有自己的showColor()版本。而事實(shí)上,每個(gè)對(duì)象都共享同一個(gè)函數(shù)。有些開(kāi)發(fā)者在工廠函數(shù)外定義對(duì)象的方法,然后通過(guò)屬性指向該方法,從而避免這個(gè)問(wèn)題:functionshowColor(){alert(this.color);}functioncreateCar(sColor,iDoors,iMpg){varoTempCar=newObject;oTempCar.color=sColor;oTempCar.doors=iDoors;oTempCar.mpg=iMpg;oTempCa

7、r.showColor=showColor;returnoTempCar;}varoCar1=createCar("red",4,23);varoCar2=createCar("blue",3,25);oCar1.showColor();//輸出"red"oCar2.showColor();//輸出"blue"?在上面這段重寫的代碼中,在函數(shù)createCar()之前定義了函數(shù)showColor()。在createCar()內(nèi)部,賦予對(duì)象一個(gè)指向已經(jīng)存在的showColor()函數(shù)的指針。從功能上講,這樣解決了重復(fù)創(chuàng)建函數(shù)對(duì)象的問(wèn)題;但是從語(yǔ)義上講,該函數(shù)不太像

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

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

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