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

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

ID:32020332

大小:91.00 KB

頁數:36頁

時間:2019-01-30

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

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

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

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

4、數我們還可以修改createCar()函數,給它傳遞各個屬性的默認值,而不是簡單地賦予屬性默認值: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()函數加上參數,即可為要創(chuàng)建的car對象的color、doors和mpg屬性賦值。這使兩個對象具有相同的屬性,卻有不同的屬性值。在工廠函數外定義對象的方法雖然ECMAScript越來越正式化,但創(chuàng)建對象的方法卻被置之不理,且其規(guī)范化至今還遭人反對。一部分是語義上的原因(它看起來不像使用帶有構造函數new運算符那么正規(guī)),一部分是功能上的原因。功能原因在于用這種方式必須創(chuàng)建對象的方法。前面的例子中,每次調

6、用函數createCar(),都要創(chuàng)建新函數showColor(),意味著每個對象都有自己的showColor()版本。而事實上,每個對象都共享同一個函數。有些開發(fā)者在工廠函數外定義對象的方法,然后通過屬性指向該方法,從而避免這個問題: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"?在上面這段重寫的代碼中,在函數createCar()之前定義了函數showColor()。在createCar()內部,賦予對象一個指向已經存在的showColor()函數的指針。從功能上講,這樣解決了重復創(chuàng)建函數對象的問題;但是從語義上講,該函數不太像

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

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

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