面向?qū)ο蟮腏avaScript
從語言的視角來看,面向?qū)ο蟮某绦蛟O(shè)計和面向?qū)ο蟮腏avaScript語言絕對不是什么摩登的東西;JavaScript最開始就是被設(shè)計成一種徹底的面向?qū)ο笳Z言。然而,隨著JavaScript在其使用和接受的過程中的“逐步發(fā)展”,其它語言(如Ruby,Python,和Perl等)的程序員留意到了它并開始將他們的編程模式引入了JavaScript。
面向?qū)ο蟮腏avaScript代碼的外觀和內(nèi)部運(yùn)作都有別于其它具有對象能力的語言。在第二章我將深入論述使它如此獨(dú)特的方方面面,而在這里,先來看一點(diǎn)基礎(chǔ)的東西以體會編寫現(xiàn)代JavaScript代碼的初步感覺。程序1-1中的兩個對象構(gòu)造器的例子,演示了可用于學(xué)校課程的簡單的對象搭配。
程序1-1. 課程和課程表的面向?qū)ο驤avaScript表述
//類Lecture的構(gòu)造器 //使用兩個字符串參數(shù),name和teacher function Lecture( name, teacher ) { //把它們作為對象的本地屬性保存 this.name = name; this.teacher = teacher; }
//類Lecture的方法,生成一個顯示該課程信息的字符串 Lecture.prototype.display = function(){ return this.teacher + " is teaching " + this.name; };
//類Schedule的構(gòu)造器 //使用一個lectures類型的數(shù)組作為參數(shù) function Schedule( lectures ) { this.lectures = lectures; }
//類Schedule的方法,用來構(gòu)造一個描述該課程表的字符串 Schedule.prototype.display = function(){ var str = ""; //遍歷每門課程,累加構(gòu)成信息字符串 for ( var i = 0; i < this.lectures.length; i++ ) str += this.lectures[i].display() + " "; return str; };
從程序1-1的代碼中你或許已經(jīng)看出,大部分的面向?qū)ο蠡驹瓌t貫穿存在于其中,但它們是以不同于其它更常見的面向?qū)ο笳Z言的方式組織起來的。你可以創(chuàng)建對象構(gòu)造器和方法,并存取對象屬性。程序1-2展示了在應(yīng)用程序中使用上面兩個類的一個示例。
程序1-2. 給用戶提供課程的列表
//創(chuàng)建一個新的課表對象,存于變量mySchedule中 var mySchedule = new Schedule([ //創(chuàng)建一個課程對象的數(shù)組, //作為傳給課表(原文此處為Lecture,疑為筆誤)對象的唯一參數(shù) new Lecture( "Gym", "Mr. Smith" ), new Lecture( "Math", "Mrs. Jones" ), new Lecture( "English", "TBD" ) ]);
// 彈出對話框顯示課表的信息 alert( mySchedule.display() );
伴隨對廣大程序員對JavaScript的接受,設(shè)計良好的面向?qū)ο蟠a的使用也正日益普及。貫穿本書的始末,我將試圖展示我認(rèn)為能夠最好地例示代碼設(shè)計與實(shí)現(xiàn)的不同的面向?qū)ο蟮腏avaScript代碼片段。
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 摘要 下一頁 測試你的代碼
◎進(jìn)入論壇網(wǎng)頁制作、網(wǎng)站綜合版塊參加討論
|