資源描述:
《javascript面向?qū)ο缶幊獭酚蓵T上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、javascript面向?qū)ο缶幊炭淇隧?xiàng)目部:王鎮(zhèn)煉目錄:一、Javascript面向?qū)ο缶幊痰乃枷攵?、?chuàng)建對象三、對象繼承四、實(shí)例操作五、總結(jié)一、Javascript面向?qū)ο缶幊痰乃枷?.用JavaScript實(shí)現(xiàn)類JavaScritpt沒有專門的機(jī)制實(shí)現(xiàn)類,這里是借助它的函數(shù)允許嵌套的機(jī)制來實(shí)現(xiàn)類的。一個函數(shù)可以包含變量,又可以包含其它函數(shù),這樣,變量可以作為屬性,內(nèi)部的函數(shù)就可以作為成員方法了。因此外層函數(shù)本身就可以作為一個類了。functionmyClass(){????//此處相當(dāng)于構(gòu)造函數(shù)}這里m
2、yClass就是一個類。其實(shí)可以把它看成類的構(gòu)造函數(shù)。至于非構(gòu)造函數(shù)的部分,以后會詳細(xì)描述。二、創(chuàng)建對象1.如何獲得一個類的實(shí)例?????實(shí)現(xiàn)了類就應(yīng)該可以獲得類的實(shí)例,JavaScript提供了一個方法可以獲得對象實(shí)例。即new操作符。其實(shí)JavaScript中,類和函數(shù)是同一個概念,當(dāng)用new操作一個函數(shù)時就返回一個對象。如下:varobj1?=?newmyClass();2.對象的成員的引用在JavaScript中引用一個類的屬性或方法的方法有以下三種。1>點(diǎn)號操作符對象名.屬性名;對象名.方法名;2
3、>方括號引用JavaScript中允許用方括號引用對象的成員。如下:對象名["屬性名"];對象名["方法名"];3>使用eval函數(shù)如果不希望使用變量傳遞變量或方法名,又不想使用條件判斷,那么eval函數(shù)是一個好的選擇。eval接收一個字符串類型的參數(shù),然后將這個字符串作為代碼在上下文中執(zhí)行,返回執(zhí)行的結(jié)果。這里正是利用了eval的這一功能。如下:alert(eval("對象名."?+?element.value));3對象廢除把對象的所有引用都設(shè)置為null,可以強(qiáng)制性的廢除對象。例如:VaroObj=ne
4、wObject;oObj=null;當(dāng)變量oObject設(shè)置為null后,對第一個創(chuàng)建的對象的引用就不存在了。這意味著下次運(yùn)行無用存儲單元收集程序時,該對象將被銷毀。每用完一個對象后,就將其廢除,來釋放內(nèi)存,這是個好習(xí)慣。這樣還確保不再使用已經(jīng)不能訪問的對象,從而防止程序設(shè)計錯誤的出現(xiàn)4.公用、受保護(hù)和私有作用域?qū)avaScript討論這些作用域幾乎毫無意義,因?yàn)镴avaScript中只存在一種作用域——公用作用域。JavaScript中的所有對象的所有屬性和方法都是公用的。因此,定義自己的類和對象時,必須格
5、外小心。記住,所有屬性和方法默認(rèn)都是公用的。許多開發(fā)者都在網(wǎng)上提出了有效的屬性作用域模式,解決了JavaScript的這種問題。由于缺少私有作用域,開發(fā)者們制定了一個規(guī)約,說明哪些屬性和方法應(yīng)該被看作私有的。這種規(guī)約規(guī)定在屬性名前后加下劃線。例如:Obj._color=“red”;這段代碼中,屬性color是私有的。記住,這些下劃線并不改變這些屬性是公用屬性的事實(shí),它只是告訴其他開發(fā)者,應(yīng)該把該屬性看作私有的。5創(chuàng)建類的幾種方式1工廠方式2構(gòu)造函數(shù)方式3原型模式4混合的構(gòu)造函數(shù)/原型方式6、創(chuàng)建新方法可以用pr
6、ototype屬性為任何已有的類定義新方法,就像處理自己的類一樣。例如,還記得Number類的toString()方法嗎,如果給它傳遞16,它將輸出十六進(jìn)制的字符串。Number.prototype.toHexString=function(){returnthis.toString(16);}7、重定義已有方法就像能給已有的類定義新方法一樣,也可重定義已有的方法。函數(shù)名只是指向函數(shù)的指針,因此可以輕易地使它指向其他函數(shù)。三、對象的繼承說明繼承機(jī)制最簡單的方法是,利用一個經(jīng)典的例子——幾何形狀。在這個例子中,形
7、狀(Shape)是橢圓形(Ellipse)和多邊形(Polygon)的基類(baseclass)(所有類都由它繼承而來)。橢圓具有一個屬性foci,說明橢圓具有的焦點(diǎn)的個數(shù)。圓形(Circle)繼承了橢圓形,因此圓形是橢圓形的子類(subclass),橢圓形是圓形的超類(superclass)。同樣的,三角形(Triangle)、矩形(Rectangle)和五邊形(Pentagon)都是多邊形的子類,多邊形是它們的超類。最后,正方形(Square)繼承了矩形。1、創(chuàng)建對象首先考慮Polygon類。哪些屬性和方法
8、是必需的?首先,一定要知道多邊形的邊數(shù),所以應(yīng)該加入整數(shù)屬性sides。還有什么是多邊形必需的?也許你想知道多邊形的面積,那么加入計算面積的方法getArea()。2.創(chuàng)建子類現(xiàn)在考慮創(chuàng)建Triangle類。三角形具有三條邊,因此這個類必須覆蓋Polygon類的sides屬性,把它設(shè)置為3。還要覆蓋getArea()方法,使用三角形的面積公式,即1/2×底×高。但如何得到底和高的值呢?