徐秀勤
(南京信息職業技術學院,210023)
當今世界,人們通過訪問互聯網上各Web站點可以觸摸到世界的各個角落,訪問到各種信息。如瀏覽新聞、觀看電影、聽音樂、網上購物等等。人們利用Web工作、學習和生活,Web成為了人們生活的重要組成部分。由此Web編程技術也隨之高速發展起來。與此想應的各大院校計算機相關專業都開設了Web編程技術的課程,其中之一就是JavaScript腳本語言,在教學過程中發現學生很難理解,不容易學好。如果學生在學習之前能對JavaScript腳本語言有所了解,相信對學生學習會有所幫助。
JavaScript腳本語言是一種由Netscape的LiveScript發展而來的原型化繼承的基于對象和事件驅動并具有相對安全性的動態類型的客戶端腳本語言,主要目的是為客戶提供更流暢的瀏覽效果。JavaScript用在HTML文檔中編寫客戶端腳本代碼,從而實現客戶端Web網頁內容動態變化。當用戶在客戶端瀏覽器中打開網頁時,瀏覽器會執行該網頁內嵌或導入的JavaScript代碼,用戶可以通過交互式更改網頁的內容和外觀,實現了僅用HTML和CSS技術不能實現的動態效果。
JavaScript腳本語言概括起來有如下幾個特點:
(1)簡單性:JavaScript是一種解釋性語言,不需要提前進行編譯,在程序運行過程中由瀏覽器邊解釋邊執行,因此不需要額外的運行環境。
(2)跨平臺:由于JavaScript腳本代碼只依賴于瀏覽器,所以與系統環境無關,無論在Windows操作系統下還是其他操作系統下,只要瀏覽器支持JavaScript腳本,即可正確執行包含JavaScript的HTML文檔。
(3)基于對象和事件驅動:JavaScript腳本語言自身提供了對象,如Math對象、String對象、Date對象等等,還可使用瀏覽器對象,如window對象、document對象等,不需要創建類就直接可以使用或通過創建一個新對象來設置該對象的屬性、調用該對象的方法,以完成所需要的功能。另外JavaScript腳本對于用戶操作的響應是采用事件驅動的方式進行的。如在網頁運行過程中,如果用戶進行了鼠標單擊、鼠標移動、按下鍵盤等操作都可以被視為事件,在JavaScript中可以根據需要編寫相應的事件響應程序,當瀏覽器一旦監測到事件發生了,則就可以執行相應的事件處理程序。
(4)節省與服務器的交互時間:JavaScript腳本是動態的,可以直接對用戶操作做出響應,而不需要經過Web服務器程序處理。例如:假若用戶訪問的網頁要求用戶填寫表單輸入若干信息,其中某些信息不能為空或是必須滿足一定條件,如用戶名只能是中文、郵政編碼只能輸入數字等,那么客戶端通過編寫JavaScript腳本就能完成這些信息的驗證工作,而不用向Web服務器發出請求驗證的消息,由此大大節約了客戶端與服務器之間的交互時間。即使必須要調用服務器端驗證該用戶是否為合法用戶,也可以利用Ajax技術以異步請求的方式把用戶輸入的通過初步驗證的信息提交給服務器進行處理,也大大減輕了服務器的開銷。
一個完整的JavaScript腳本語言是由以下3個不同部分組成的:核心(ECMAScript)、文檔對象模型(Document Object Model,簡稱 DOM)、瀏覽器對象模型(Browser Object Model,簡稱BOM),如右圖所示。

核心(ECMAScript):即JavaScript腳本的基本語法、變量、運算符、表達式、基本語句、函數及內置對象等,關鍵詞及語法跟C、C++、Java等語言基本相似,但也不完全相同。
BOM:嵌入HTML代碼中的JavaScript腳本是在瀏覽器中加載網頁時運行的,為了實現與瀏覽器窗口的交互,還需要使用瀏覽器對象(Brower Object Model,BOM )。BOM對象主要包括Window對象、document對象、history對象、location對象等。通過BOM對象可以操作瀏覽器窗口、處理文檔、還可以獲取客戶端瀏覽器信息及屏幕的分辨率詳細信息等。
DOM:DOM是Document Object Model的簡稱,即文檔對象模型,是W3C組織推薦的處理可擴展置標語言的標準編程接口。DOM是上世紀90年代后期微軟與Netscape的“瀏覽器大戰”的產物,雙方為了在JavaScript與JScript一決生死,雙方于是大規模的賦予瀏覽器強大的功能,DOM即是當時醞釀出來的杰作。通過文檔對象可以操作文檔中的每一個節點,從而實現網頁內容的動態變化。
JavaScript腳本語言是解釋性的、弱類型的動態Web編程技術,它與一般的程序設計語言如C、C++、Java等有相似之處但,也有不同之處,如變量的弱類型、函數使用及對象使用。不少學生會互相混淆,在學習的過程中學生應該充分注意到這些差異。
JavaScript腳本語言基本數據類型只有:number、string、boolean和兩個特殊類型undefined(未定義類型)和null(空值)。用var關鍵詞變量定義時,并不指定類型,它里面可以存放任意類型的數據,賦值后變量的類型才被決定。同一個變量可以給它賦不同類型的數值,它的類型也隨之改變,但不建議這樣使用變量。
在JavaScript腳本語言中,不僅可以通過定義函數、調用函數來實現特定的功能,還可以定義一個匿名函數、嵌套定義函數,并且可以將整個函數作為函數參數。
使用匿名函數可以有效保證在頁面上寫入JavaScript代碼,而不會造成全局變量的污染。這在給一個不是很熟悉的頁面增加JavaScript代碼時非常有效,也很優美。
使用嵌套函數的目的是可以把一個函數的可見性封裝在另一個函數中,使得內部函數作為外層全局函數的私有函數,從而確保內部函數的安全性。
使用函數作為參數,可以不需要根據不同的函數進行處理,從而極大方便不同函數的調用。
JavaScript腳本語言中沒有正式的類,但有各種對象可供用戶使用。如本地對象、內置對象、宿主對象和用戶自定義對象。
本地對象有 Number、String、Boolean、Array、Date、Function、Object等,它們是由JavaScript實現提供,在腳本中需要用new運算符來創建,如“var oD1=new Date();”,這條語句定義了一個oD1日期型對象,其初始值是系統當前日期和時間,通過這個對象可以訪問其方法來設置或取得相關日期信息,如年、月、日、星期幾、時、分、秒等。如 oD1.getYear(),可以得到oD1這個日期對象的4位數的年份。
內置對象有Global對象和Math對象。這兩個對象不能用new運算符創建,而是直接使用。其中Global對象在訪問其屬性與方法時時不需要冠以“Global.”,否則會出錯。如parseInt()、eval()等;而Math對象使用時則應該冠以“Math.”,如 Math.rand()、Math.floor()等。
宿主對象是由JavaScript實現時的運行環境(如瀏覽器)提供的,如上面介紹的BOM對象和DOM對象都是宿主對象。
用戶自定義對象:在JavaScript腳本語言中使用各種預定義對象只是其功能的一部分,該語言還允許用戶根據需要創建自己的類和對象,從而實現更加強大的功能。
JavaScript腳本是嵌入在HTML文檔中的,然后是通過瀏覽器來解釋執行的,非常簡單,因此對開發環境要求很低。HTML文檔是文本文件,記事本可以完成編輯工作,在文件保存時取擴展名為.html即可,然后雙擊該文件即可瀏覽,唯一的缺點是所有代碼必須一一輸入。如果利用Dreamweaver或是其他開發工具,則可以方便許多。在輸入代碼過程中會智能出現許多匹配的標簽供選擇,大大提高速度的同時也降低了錯誤率。
C、C++、JavaScript等語言的開發工具,在代碼編寫過程中如果有語法錯誤則會馬上標記出來,提醒用戶立即修改,但Dreamweaver開發工具則無此功能。HTML文檔如果頁面不能正常訪問,用戶必須從頭開始逐條檢查代碼進行修改,如果想知道哪條代碼出現了問題,則可以通過修改“Internet選項”設置來處理。具體步驟是:打開IE瀏覽器打開“工具”菜單選擇“Internet選項”再選擇“高級”選項卡在“設置”欄選中“安全”欄目下的“顯示每個腳本錯誤的通知”。通過這樣的設置,網頁不能正常瀏覽時,會提示詳細的錯誤信息,告訴用戶哪一條代碼有問題,這樣就可以大大提高編程 效率。
在開始學習JavaScript腳本語言之前,如果能了解以上幾點,并在學習的過程中時時同其他已經學習過語言進行比較,對于不同之處加以特別注意,另外多編程,多練習,同時有效利用Internet選項設置,則可以大大提高學習的效率和學習效果。