javascript(js)如何創(chuàng)建類與對象

javascript(js)如何創(chuàng)建類與對象

ID:19717103

大?。?9.50 KB

頁數(shù):9頁

時間:2018-10-05

javascript(js)如何創(chuàng)建類與對象_第1頁
javascript(js)如何創(chuàng)建類與對象_第2頁
javascript(js)如何創(chuàng)建類與對象_第3頁
javascript(js)如何創(chuàng)建類與對象_第4頁
javascript(js)如何創(chuàng)建類與對象_第5頁
資源描述:

《javascript(js)如何創(chuàng)建類與對象》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫

1、Js如何創(chuàng)建類和對象使用預定義對象只是面向對象語言的能力的一部分,它真正強大之處在于能夠創(chuàng)建自己專用的類和對象。ECMAScript擁有很多創(chuàng)建對象或類的方法。工廠方式原始的方式因為對象的屬性可以在對象創(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。然后給它設置幾個屬性:它的顏色是藍色

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

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

4、還可以修改createCar()函數(shù),給它傳遞各個屬性的默認值,而不是簡單地賦予屬性默認值: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("bl

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

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

7、Color=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)部,賦予對象一個指向已經(jīng)存在的showColor()函數(shù)的指針。從功能上講,這樣解決了重復創(chuàng)建函數(shù)對象的問題;但是從語義上講,該函數(shù)不太像

當前文檔最多預覽五頁,下載文檔查看全文

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

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