資源描述:
《使用面向?qū)ο蟮募夹g(shù)創(chuàng)建高級(jí) Web 應(yīng)用程序 畢業(yè)論文外文文獻(xiàn)翻譯》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、附錄畢業(yè)設(shè)計(jì)(論文)外文資料翻譯院(系):計(jì)算機(jī)科學(xué)與工程學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班級(jí):070610姓名:學(xué)號(hào):070610316外文出處:附件:1.譯文;2.原文2011年4月27日使用面向?qū)ο蟮募夹g(shù)創(chuàng)建高級(jí)Web應(yīng)用程序面向?qū)ο缶幊?OOP)是一種流行的編程方法,很多JavaScript庫(kù)中都使用這種方法,以便更好地管理和維護(hù)基本代碼。JavaScript支持OOP,但與諸如C++、C#或VisualBasic等流行的Microsoft.NETFramework兼容語(yǔ)言相比,它支持OOP的方式非常不同,因
2、此主要使用這些語(yǔ)言的開(kāi)發(fā)人員開(kāi)始可能會(huì)覺(jué)得在JavaScript中使用OOP很奇怪而且不直觀。我寫(xiě)本文就是為了深入討論JavaScript語(yǔ)言實(shí)際上如何支持面向?qū)ο缶幊?,以及您如何使用這一支持在JavaScript中高效地進(jìn)行面向?qū)ο箝_(kāi)發(fā)。下面首先討論對(duì)象(還能先討論其他別的什么呢?)。JavaScript對(duì)象是詞典在C++或C#中,在談?wù)搶?duì)象時(shí),是指類或結(jié)構(gòu)的實(shí)例。對(duì)象有不同的屬性和方法,具體取決于將它們實(shí)例化的模板(即類)。而JavaScript對(duì)象卻不是這樣。在JavaScript中,對(duì)象只是一組名稱/值
3、對(duì),就是說(shuō),將JavaScript對(duì)象視為包含字符串關(guān)鍵字的詞典。我們可以使用熟悉的“.”(點(diǎn))運(yùn)算符或“[]”運(yùn)算符,來(lái)獲得和設(shè)置對(duì)象的屬性,這是在處理詞典時(shí)通常采用的方法。以下代碼段:varuserObject=newObject();userObject.lastLoginTime=newDate();alert(userObject.lastLoginTime);功能與下面的代碼段完全相同:varuserObject={};//equivalenttonewObject()userObject[“l(fā)as
4、tLoginTime”]=newDate();alert(userObject[“l(fā)astLoginTime”]);我們還可以直接在userObject的定義中定義lastLoginTime屬性,如下所示:varuserObject={“l(fā)astLoginTime”:newDate()};alert(userObject.lastLoginTime);注意,它與C#3.0對(duì)象初始值非常相似。而且,熟悉Python的人會(huì)發(fā)現(xiàn)在第二和第三個(gè)代碼段中實(shí)例化userObject的方法與在Python中指定詞典的方法完全
5、相同。唯一的差異是JavaScript對(duì)象/詞典只接受字符串關(guān)鍵字,而不是像Python詞典那樣接受可哈?;膶?duì)象。這些示例還顯示JavaScript對(duì)象比C++或C#對(duì)象具有更大的可延展性。您不必預(yù)先聲明屬性lastLoginTime如果userObject沒(méi)有該名稱的屬性,該屬性將被直接添加到userObject。如果記住JavaScript對(duì)象是詞典,您就不會(huì)對(duì)此感到吃驚了,畢竟,我們一直在向詞典添加新關(guān)鍵字(和其各自的值)。6這樣,我們就有了對(duì)象屬性。對(duì)象方法呢?同樣,JavaScript與C++/C#
6、不同。若要理解對(duì)象方法,首先需要仔細(xì)了解一下JavaScript函數(shù)。JavaScript函數(shù)是最棒的在很多編程語(yǔ)言中,函數(shù)和對(duì)象通常被視為兩樣不同的東西。在JavaScript中,其差別很模糊—JavaScript函數(shù)實(shí)際上是具有與它關(guān)聯(lián)的可執(zhí)行代碼的對(duì)象。請(qǐng)如此看待普通函數(shù):functionfunc(x){alert(x);}func(“blah”);這就是通常在JavaScript中定義函數(shù)的方法。但是,還可以按以下方法定義該函數(shù),您在此創(chuàng)建匿名函數(shù)對(duì)象,并將它賦給變量functionvarfunc=fu
7、nction(x){alert(x);};func(“blah2”);甚至也可以像下面這樣,使用Function構(gòu)造函數(shù):varfunc=newFunction(“x”,“alert(x);”);func(“blah3”);此示例表明函數(shù)實(shí)際上只是支持函數(shù)調(diào)用操作的對(duì)象。最后一個(gè)使用Function構(gòu)造函數(shù)來(lái)定義函數(shù)的方法并不常用,但它展示的可能性非常有趣,因?yàn)槟赡茏⒁獾?,該函?shù)的主體正是Function構(gòu)造函數(shù)的String參數(shù)。這意味著,您可以在運(yùn)行時(shí)構(gòu)造任意函數(shù)。構(gòu)造函數(shù)而不是類前面提到過(guò),有關(guān)Java
8、ScriptOOP的最奇怪的事情是,JavaScript不像C#或C++那樣,它沒(méi)有類。在C#中,在執(zhí)行類似下面的操作時(shí):Dogspot=newDog();將返回一個(gè)對(duì)象,該對(duì)象是Dog類的實(shí)例。但在JavaScript中,本來(lái)就沒(méi)有類。與訪問(wèn)類最近似的方法是定義構(gòu)造函數(shù),如下所示:functionDogConstructor(name){this.name=name;this.res