徐秀勤
(南京信息職業(yè)技術(shù)學(xué)院,210023)
當(dāng)今世界,人們通過訪問互聯(lián)網(wǎng)上各Web站點(diǎn)可以觸摸到世界的各個角落,訪問到各種信息。如瀏覽新聞、觀看電影、聽音樂、網(wǎng)上購物等等。人們利用Web工作、學(xué)習(xí)和生活,Web成為了人們生活的重要組成部分。由此Web編程技術(shù)也隨之高速發(fā)展起來。與此想應(yīng)的各大院校計算機(jī)相關(guān)專業(yè)都開設(shè)了Web編程技術(shù)的課程,其中之一就是JavaScript腳本語言,在教學(xué)過程中發(fā)現(xiàn)學(xué)生很難理解,不容易學(xué)好。如果學(xué)生在學(xué)習(xí)之前能對JavaScript腳本語言有所了解,相信對學(xué)生學(xué)習(xí)會有所幫助。
JavaScript腳本語言是一種由Netscape的LiveScript發(fā)展而來的原型化繼承的基于對象和事件驅(qū)動并具有相對安全性的動態(tài)類型的客戶端腳本語言,主要目的是為客戶提供更流暢的瀏覽效果。JavaScript用在HTML文檔中編寫客戶端腳本代碼,從而實(shí)現(xiàn)客戶端Web網(wǎng)頁內(nèi)容動態(tài)變化。當(dāng)用戶在客戶端瀏覽器中打開網(wǎng)頁時,瀏覽器會執(zhí)行該網(wǎng)頁內(nèi)嵌或?qū)氲腏avaScript代碼,用戶可以通過交互式更改網(wǎng)頁的內(nèi)容和外觀,實(shí)現(xiàn)了僅用HTML和CSS技術(shù)不能實(shí)現(xiàn)的動態(tài)效果。
JavaScript腳本語言概括起來有如下幾個特點(diǎn):
(1)簡單性:JavaScript是一種解釋性語言,不需要提前進(jìn)行編譯,在程序運(yùn)行過程中由瀏覽器邊解釋邊執(zhí)行,因此不需要額外的運(yùn)行環(huán)境。
(2)跨平臺:由于JavaScript腳本代碼只依賴于瀏覽器,所以與系統(tǒng)環(huán)境無關(guān),無論在Windows操作系統(tǒng)下還是其他操作系統(tǒng)下,只要瀏覽器支持JavaScript腳本,即可正確執(zhí)行包含JavaScript的HTML文檔。
(3)基于對象和事件驅(qū)動:JavaScript腳本語言自身提供了對象,如Math對象、String對象、Date對象等等,還可使用瀏覽器對象,如window對象、document對象等,不需要創(chuàng)建類就直接可以使用或通過創(chuàng)建一個新對象來設(shè)置該對象的屬性、調(diào)用該對象的方法,以完成所需要的功能。另外JavaScript腳本對于用戶操作的響應(yīng)是采用事件驅(qū)動的方式進(jìn)行的。如在網(wǎng)頁運(yùn)行過程中,如果用戶進(jìn)行了鼠標(biāo)單擊、鼠標(biāo)移動、按下鍵盤等操作都可以被視為事件,在JavaScript中可以根據(jù)需要編寫相應(yīng)的事件響應(yīng)程序,當(dāng)瀏覽器一旦監(jiān)測到事件發(fā)生了,則就可以執(zhí)行相應(yīng)的事件處理程序。
(4)節(jié)省與服務(wù)器的交互時間:JavaScript腳本是動態(tài)的,可以直接對用戶操作做出響應(yīng),而不需要經(jīng)過Web服務(wù)器程序處理。例如:假若用戶訪問的網(wǎng)頁要求用戶填寫表單輸入若干信息,其中某些信息不能為空或是必須滿足一定條件,如用戶名只能是中文、郵政編碼只能輸入數(shù)字等,那么客戶端通過編寫JavaScript腳本就能完成這些信息的驗證工作,而不用向Web服務(wù)器發(fā)出請求驗證的消息,由此大大節(jié)約了客戶端與服務(wù)器之間的交互時間。即使必須要調(diào)用服務(wù)器端驗證該用戶是否為合法用戶,也可以利用Ajax技術(shù)以異步請求的方式把用戶輸入的通過初步驗證的信息提交給服務(wù)器進(jìn)行處理,也大大減輕了服務(wù)器的開銷。
一個完整的JavaScript腳本語言是由以下3個不同部分組成的:核心(ECMAScript)、文檔對象模型(Document Object Model,簡稱 DOM)、瀏覽器對象模型(Browser Object Model,簡稱BOM),如右圖所示。
核心(ECMAScript):即JavaScript腳本的基本語法、變量、運(yùn)算符、表達(dá)式、基本語句、函數(shù)及內(nèi)置對象等,關(guān)鍵詞及語法跟C、C++、Java等語言基本相似,但也不完全相同。
BOM:嵌入HTML代碼中的JavaScript腳本是在瀏覽器中加載網(wǎng)頁時運(yùn)行的,為了實(shí)現(xiàn)與瀏覽器窗口的交互,還需要使用瀏覽器對象(Brower Object Model,BOM )。BOM對象主要包括Window對象、document對象、history對象、location對象等。通過BOM對象可以操作瀏覽器窗口、處理文檔、還可以獲取客戶端瀏覽器信息及屏幕的分辨率詳細(xì)信息等。
DOM:DOM是Document Object Model的簡稱,即文檔對象模型,是W3C組織推薦的處理可擴(kuò)展置標(biāo)語言的標(biāo)準(zhǔn)編程接口。DOM是上世紀(jì)90年代后期微軟與Netscape的“瀏覽器大戰(zhàn)”的產(chǎn)物,雙方為了在JavaScript與JScript一決生死,雙方于是大規(guī)模的賦予瀏覽器強(qiáng)大的功能,DOM即是當(dāng)時醞釀出來的杰作。通過文檔對象可以操作文檔中的每一個節(jié)點(diǎn),從而實(shí)現(xiàn)網(wǎng)頁內(nèi)容的動態(tài)變化。
JavaScript腳本語言是解釋性的、弱類型的動態(tài)Web編程技術(shù),它與一般的程序設(shè)計語言如C、C++、Java等有相似之處但,也有不同之處,如變量的弱類型、函數(shù)使用及對象使用。不少學(xué)生會互相混淆,在學(xué)習(xí)的過程中學(xué)生應(yīng)該充分注意到這些差異。
JavaScript腳本語言基本數(shù)據(jù)類型只有:number、string、boolean和兩個特殊類型undefined(未定義類型)和null(空值)。用var關(guān)鍵詞變量定義時,并不指定類型,它里面可以存放任意類型的數(shù)據(jù),賦值后變量的類型才被決定。同一個變量可以給它賦不同類型的數(shù)值,它的類型也隨之改變,但不建議這樣使用變量。
在JavaScript腳本語言中,不僅可以通過定義函數(shù)、調(diào)用函數(shù)來實(shí)現(xiàn)特定的功能,還可以定義一個匿名函數(shù)、嵌套定義函數(shù),并且可以將整個函數(shù)作為函數(shù)參數(shù)。
使用匿名函數(shù)可以有效保證在頁面上寫入JavaScript代碼,而不會造成全局變量的污染。這在給一個不是很熟悉的頁面增加JavaScript代碼時非常有效,也很優(yōu)美。
使用嵌套函數(shù)的目的是可以把一個函數(shù)的可見性封裝在另一個函數(shù)中,使得內(nèi)部函數(shù)作為外層全局函數(shù)的私有函數(shù),從而確保內(nèi)部函數(shù)的安全性。
使用函數(shù)作為參數(shù),可以不需要根據(jù)不同的函數(shù)進(jìn)行處理,從而極大方便不同函數(shù)的調(diào)用。
JavaScript腳本語言中沒有正式的類,但有各種對象可供用戶使用。如本地對象、內(nèi)置對象、宿主對象和用戶自定義對象。
本地對象有 Number、String、Boolean、Array、Date、Function、Object等,它們是由JavaScript實(shí)現(xiàn)提供,在腳本中需要用new運(yùn)算符來創(chuàng)建,如“var oD1=new Date();”,這條語句定義了一個oD1日期型對象,其初始值是系統(tǒng)當(dāng)前日期和時間,通過這個對象可以訪問其方法來設(shè)置或取得相關(guān)日期信息,如年、月、日、星期幾、時、分、秒等。如 oD1.getYear(),可以得到oD1這個日期對象的4位數(shù)的年份。
內(nèi)置對象有Global對象和Math對象。這兩個對象不能用new運(yùn)算符創(chuàng)建,而是直接使用。其中Global對象在訪問其屬性與方法時時不需要冠以“Global.”,否則會出錯。如parseInt()、eval()等;而Math對象使用時則應(yīng)該冠以“Math.”,如 Math.rand()、Math.floor()等。
宿主對象是由JavaScript實(shí)現(xiàn)時的運(yùn)行環(huán)境(如瀏覽器)提供的,如上面介紹的BOM對象和DOM對象都是宿主對象。
用戶自定義對象:在JavaScript腳本語言中使用各種預(yù)定義對象只是其功能的一部分,該語言還允許用戶根據(jù)需要創(chuàng)建自己的類和對象,從而實(shí)現(xiàn)更加強(qiáng)大的功能。
JavaScript腳本是嵌入在HTML文檔中的,然后是通過瀏覽器來解釋執(zhí)行的,非常簡單,因此對開發(fā)環(huán)境要求很低。HTML文檔是文本文件,記事本可以完成編輯工作,在文件保存時取擴(kuò)展名為.html即可,然后雙擊該文件即可瀏覽,唯一的缺點(diǎn)是所有代碼必須一一輸入。如果利用Dreamweaver或是其他開發(fā)工具,則可以方便許多。在輸入代碼過程中會智能出現(xiàn)許多匹配的標(biāo)簽供選擇,大大提高速度的同時也降低了錯誤率。
C、C++、JavaScript等語言的開發(fā)工具,在代碼編寫過程中如果有語法錯誤則會馬上標(biāo)記出來,提醒用戶立即修改,但Dreamweaver開發(fā)工具則無此功能。HTML文檔如果頁面不能正常訪問,用戶必須從頭開始逐條檢查代碼進(jìn)行修改,如果想知道哪條代碼出現(xiàn)了問題,則可以通過修改“Internet選項”設(shè)置來處理。具體步驟是:打開IE瀏覽器打開“工具”菜單選擇“Internet選項”再選擇“高級”選項卡在“設(shè)置”欄選中“安全”欄目下的“顯示每個腳本錯誤的通知”。通過這樣的設(shè)置,網(wǎng)頁不能正常瀏覽時,會提示詳細(xì)的錯誤信息,告訴用戶哪一條代碼有問題,這樣就可以大大提高編程 效率。
在開始學(xué)習(xí)JavaScript腳本語言之前,如果能了解以上幾點(diǎn),并在學(xué)習(xí)的過程中時時同其他已經(jīng)學(xué)習(xí)過語言進(jìn)行比較,對于不同之處加以特別注意,另外多編程,多練習(xí),同時有效利用Internet選項設(shè)置,則可以大大提高學(xué)習(xí)的效率和學(xué)習(xí)效果。