本書介紹了JavaScript腳本語言的基礎知識和實用技術。全書共11章,內容包括JavaScript概述、JavaScript編程基礎、流程控制語句、對象編程、本地對象、瀏覽器對象(BOM)、文檔對象(DOM)、事件處理、函數特性、數據交換格式與數據持久化等技術,并應用本書所討論的技術內容制作一個服飾設計網站。
本書配有大量的示例和練習,介紹詳略得當,所介紹的技術具有很強的實用性、前瞻性,符合市場就業(yè)需求。讀者通過本書的學習可以快速掌握JavaScript編程基本功。
第1章 JavaScript程序概述
1.1 學習JavaScript程序設計
1.2 JavaScript簡介
1.3 開發(fā)JavaScript應用程序
【課堂案例1-1】:第1個JavaScript程序
第2章 程序的構成——函數
2.1 函數的使用
【課堂案例2-1】:在網頁上輸出消息
【課堂案例2-2】:在網頁上顯示圖片
【課堂案例2-3】:在網頁中播放視頻,顯示視頻信息
2.2 函數的參數
【課堂案例2-4】:使用參數傳遞姓氏和名字,在網頁上輸出姓名
【課堂案例2-5】:定義函數area(),用于計算矩形面積
【課堂案例2-6】:按照參數顯示圖片
2.3 函數的返回值 第1章 JavaScript程序概述
1.1 學習JavaScript程序設計
1.2 JavaScript簡介
1.3 開發(fā)JavaScript應用程序
【課堂案例1-1】:第1個JavaScript程序
第2章 程序的構成——函數
2.1 函數的使用
【課堂案例2-1】:在網頁上輸出消息
【課堂案例2-2】:在網頁上顯示圖片
【課堂案例2-3】:在網頁中播放視頻,顯示視頻信息
2.2 函數的參數
【課堂案例2-4】:使用參數傳遞姓氏和名字,在網頁上輸出姓名
【課堂案例2-5】:定義函數area(),用于計算矩形面積
【課堂案例2-6】:按照參數顯示圖片
2.3 函數的返回值
【課堂案例2-7】:計算任意3個數的平均值
【課堂案例2-8】:測試return語句功能
【課堂案例2-9】:制作簡易杏仁巧克力
【課堂案例2-10】:計算實發(fā)工資
2.4 函數的嵌套定義
【課堂案例2-11】:計算兩個圓的面積之和
*2.5 高級函數特性
【課堂案例2-12】:調用匿名函數
【課堂案例2-13】:使用匿名函數限制變量的作用域
【課堂案例2-14】:使用閉包(closure)特性調整頁面的字號
【課堂案例2-15】:數組作參數,計算購物總金額
【課堂案例2-16】:使用參數對象Arguments來計算任意n個數的和
【課堂案例2-17】:使用函數對象編寫函數測試頁面
【課堂案例2-18】:使用函數遞歸,輸出遞增的數字序列
2.6 本章練習
第3章 JavaScript語言基礎
3.1 基本數據類型
【課堂案例3-1】:數據類型測試及轉換
3.2 變量和常量
【課堂案例3-2】:變量的定義和使用
【課堂案例3-3】:變量的賦值
【課堂案例3-4】:變量的作用域
【課堂案例3-5】:使用常量PI,轉換角度與弧度
3.3 運算符和表達式
【課堂案例3-6】:算術運算符使用示例
【課堂案例3-7】:賦值運算符使用示例
【課堂案例3-8】:使用關系運算符、條件運算符判斷用戶輸入的年齡
【課堂案例3-9】:邏輯運算符使用示例
【課堂案例3-10】:字符串運算符示例
【課堂案例3-11】:位運算符示例
【課堂案例3-12】:使用typeof運算符檢測數據類型
3.4 本章練習
第4章 JavaScript語句
4.1 JavaScript語句和基本程序結構
4.2 選擇語句
【課堂案例4-1】:使用單分支if語句判斷兩個數字中的較大數
【課堂案例4-2】:使用if語句將兩個數字按從小到大的順序輸出
【課堂案例4-3】:使用if語句檢查參數值的有效性
【課堂案例4-4】:使用if…else語句計算數字的絕對值
【課堂案例4-5】:使用if…else語句判斷成績是否及格
【課堂案例4-6】:使用if嵌套刪除文件(偽代碼)
【課堂案例4-7】:使用switch語句查詢簡單的日程表
4.3 循環(huán)語句
【課堂案例4-8】:使用while語句輸出遞增的數字序列
【課堂案例4-9】:使用while語句在網頁上顯示一組圖片
【課堂案例4-10】:使用do…while語句計算100到500之間所有整數的和
【課堂案例4-11】:使用do…while語句計算m到n之間所有偶數的和
【課堂案例4-12】:使用for語句輸出1到n之間所有的整數
4.4 循環(huán)控制語句
【課堂案例4-13】:使用break語句計算最小公倍數
【課堂案例4-14】:continue語句演示
4.5 循環(huán)嵌套
【課堂案例4-15】:使用二重循環(huán)嵌套在頁面上顯示五子棋棋盤
4.6 異常處理
【課堂案例4-16】:使用throw語句拋出異常
【課堂案例4-17】:使用try…catch()…finally處理異常
4.7 本章練習
第5章 基于原型的面向對象編程
5.1 對象編程概述
5.2 自定義對象的創(chuàng)建和使用
【課堂案例5-1】:使用Object創(chuàng)建自定義對象book,用于描述圖書信息
【課堂案例5-2】:使用Object創(chuàng)建自定義對象calc,用于簡單數學計算
【課堂案例5-3】:使用構造函數創(chuàng)建自定義對象phone,用于描述電話信息
【課堂案例5-4】:創(chuàng)建圖片對象,使用this訪問對象自身的屬性和方法
【課堂案例5-5】:使用with簡化對象操作
【課堂案例5-6】:使用instanceof運算符判斷對象類型
【課堂案例5-7】:使用instanceof運算符檢查參數的類型
【課堂案例5-8】:使用for…in 循環(huán)遍歷對象成員
【課堂案例5-9】:使用私有對象屬性實現數據隱藏
【課堂案例5-10】:為屬性添加賦值方法(Setter)和取值方法(Getter)
【課堂案例5-11】:使用原型(prototype)擴展對象類型
5.3 對象繼承
【課堂案例5-12】:使用call()方法實現對象繼承
【課堂案例5-13】:使用原型鏈(Prototype Chain)實現對象繼承
5.4 定義對象的不同方式
【課堂案例5-14】:使用工廠函數方式創(chuàng)建對象
【課堂案例5-15】:使用混合的構造函數/原型方式創(chuàng)建對象
【課堂案例5-16】:使用動態(tài)原型方式創(chuàng)建對象
5.5 本章練習
第6章 本地對象
6.1 本地對象概述
6.2 Boolean對象
【課堂案例6-1】:比較布爾值與布爾對象的區(qū)別
【課堂案例6-2】:復制布爾對象
6.3 Number對象
【課堂案例6-3】:使用Number對象獲取數值極限
【課堂案例6-4】:將數字轉換成字符串
【課堂案例6-5】:設置數值精確度
【課堂案例6-6】:數值進制轉換
6.4 String對象
【課堂案例6-7】:合成新的字符串
【課堂案例6-8】:顯示字符串的Unicode編碼
【課堂案例6-9】:截取字符串內容
【課堂案例6-10】:在字符串中精確查找指定內容
【課堂案例6-11】:在字符串中進行模糊查找
【課堂案例6-12】:精確查找替換字符串內容
【課堂案例6-13】:將字符串分割成數組,提取英文句子中前3個單詞
【課堂案例6-14】:轉換字母大小寫
【課堂案例6-15】:為字符串添加樣式
6.5 RegExp對象
【課堂案例6-16】:使用正則表達式替換字符串中的文本
【課堂案例6-17】:使用正則表達式驗證電子郵箱格式
【課堂案例6-18】:使用正則表達式交換單詞的位置
6.6 Array對象
【課堂案例6-19】:使用Array對象創(chuàng)建數組
【課堂案例6-20】:使用for…in循環(huán)遍歷數組,并找到最大值
【課堂案例6-21】:對數組進行排序
【課堂案例6-22】:使用Array提供的方法添加、刪除或替換數組元素
【課堂案例6-23】:將數組轉換成字符串
【課堂案例6-24】:使用現有數組元素生成新數組
【課堂案例6-25】:使用回調函數處理數組元素
【課堂案例6-26】:使用二維數組
6.7 Math對象
【課堂案例6-27】:使用Math對象完成數學計算1
【課堂案例6-28】:使用Math對象完成數學計算2
6.8 Date對象
【課堂案例6-29】:創(chuàng)建Date對象
【課堂案例6-30】:使用Date對象計算程序運行時間
【課堂案例6-31】:使用Date對象的方法設置/獲取日期時間信息
6.9 Error對象
【課堂案例6-32】:使用自定義Error對象拋出異常
【課堂案例6-33】:處理系統拋出的異常
6.10 全局對象
【課堂案例6-34】:使用全局方法
6.11 本章練習
第7章 瀏覽器對象模型(BOM)
7.1 瀏覽器對象模型概述
7.2 window對象
【課堂案例7-1】:獲取瀏覽器窗口的位置和大小
【課堂案例7-2】:控制瀏覽器窗口的位置和大小
【課堂案例7-3】:使用模式對話框
【課堂案例7-4】:制作簡單的數字時鐘
【課堂案例7-5】:在網頁中實現滾動屏幕功能
7.3 navigator對象
【課堂案例7-6】:獲取瀏覽器及操作系統的相關信息
【課堂案例7-7】:獲取當前瀏覽器安裝的插件信息
7.4 location對象
【課堂案例7-8】:獲取瀏覽器URL的相關信息
【課堂案例7-9】:使用location對象實現頁面跳轉和刷新
【課堂案例7-10】:創(chuàng)建頁面導航
7.5 history對象
【課堂案例7-11】:訪問歷史記錄中的URL
7.6 screen對象
【課堂案例7-12】:獲取用戶屏幕信息
【課堂案例7-13】:根據用戶屏幕信息切換網頁顯示效果
7.7 本章練習
第8章 HTML文檔對象模型(DOM)
8.1 文檔對象模型概述
8.2 DOM核心接口
【課堂案例8-1】:獲取DOM樹中的節(jié)點信息
【課堂案例8-2】:刪除DOM樹中的節(jié)點
【課堂案例8-3】:在DOM樹中添加子節(jié)點
【課堂案例8-4】:替換DOM樹中的節(jié)點
【課堂案例8-5】:復制DOM樹中的節(jié)點
【課堂案例8-6】:獲取節(jié)點的屬性
【課堂案例8-7】:控制文本節(jié)點
【課堂案例8-8】:提取網頁中的超鏈接地址
8.3 DOM HTML
【課堂案例8-9】:獲取文檔信息
【課堂案例8-10】:修改文檔中的鏈接
【課堂案例8-11】:操作文檔中的表格
【課堂案例8-12】:獲取文本框中用戶輸入的內容
【課堂案例8-13】:獲取單選框用戶選擇的內容
【課堂案例8-14】:獲取復選框用戶選擇的內容
【課堂案例8-15】:控制下拉菜單
【課堂案例8-16】:判斷用戶選取的文件類型
【課堂案例8-17】:限制用戶使用表單元素
【課堂案例8-18】:驗證表單數據
【課堂案例8-19】:為所有段落加邊框
【課堂案例8-20】:選項卡效果
【課堂案例8-21】:Web相冊
【課堂案例8-22】:修改網頁背景色
【課堂案例8-23】:顯示/隱藏頁面元素
【課堂案例8-24】:覆蓋顯示圖片
【課堂案例8-25】:在網頁中繪圖1
【課堂案例8-26】:在網頁中繪圖2
8.4 本章練習
第9章 事件(Event)處理
9.1 事件處理概述
9.2 基于HTML屬性的事件處理方法
【課堂案例9-1】:文檔事件
【課堂案例9-2】:鼠標事件
【課堂案例9-3】:獲得/失去焦點事件
【課堂案例9-4】:鍵盤事件
【課堂案例9-5】:onchange事件
【課堂案例9-6】:使用this作參數
【課堂案例9-7】:為事件設置響應函數
9.3 DOM EVENT事件處理
【課堂案例9-8】:注冊事件監(jiān)聽器,設置背景圖片
【課堂案例9-9】:注冊多個事件監(jiān)聽器,實現簡易加法計算器
【課堂案例9-10】:事件指派
【課堂案例9-11】:顯示鼠標位置
【課堂案例9-12】:創(chuàng)建快捷菜單,縮放圖片
【課堂案例9-13】:創(chuàng)建快捷菜單,縮放圖片
9.4 本章練習
第10章 常用的數據交換格式和數據存儲技術
10.1 XML文檔
【課堂案例10-1】:同步訪問XML文檔,獲取圖書信息
【課堂案例10-2】:異步訪問XML文檔,設置段落樣式
【課堂案例10-3】:XML生成樹狀菜單
10.2 JSON
【課堂案例10-4】:使用JSON對象
【課堂案例10-5】:訪問JSON對象中的對象
【課堂案例10-6】:使用JSON數組
【課堂案例10-7】:訪問JSON對象數組
10.3 數據存儲
【課堂案例10-8】:使用cookie存儲用戶賬戶信息
【課堂案例10-9】:使用localStorage存儲數據
【課堂案例10-10】:使用sessionStorage存儲數據
10.3 本章練習
第11章 綜合練習——服飾設計網站
11.1 網站整體說明
11.2 JavaScript程序說明
技術背景
JavaScript是一種廣泛用于客戶端網頁開發(fā)的腳本語言,早期主要用來給HTML網頁添加動態(tài)功能。隨著Web開發(fā)技術領域的迅速發(fā)展,JavaScript以其跨平臺、容易上手等優(yōu)勢大行其道。有些特殊功能(如AJAX)必須依賴JavaScript在客戶端進行支持。隨著Google-V8引擎和Node.js框架的發(fā)展,JavaScript逐漸被用來編寫服務器端程序。HTML5和移動設備的廣泛應用,也會使JavaScript的前景更加絢麗。
就業(yè)需要
JavaScript腳本語言是開發(fā)Web應用程序所必備的技術。隨著HTML5的廣泛應用,就業(yè)崗位對于JavaScript的需求會越來越強烈。JavaScript驟然變成了聚光燈下的明星語言,越來越多的開發(fā)者加入到JavaScript陣營。下圖是Indeed.com對Web開發(fā)技術崗位需求的統計。
由趨勢分析圖可以看出,JavaScript的就業(yè)崗位需求量遠遠超過其他語言。
本書編寫目的
很多高職高專院校已將JavaScript作為一門重要的程序設計課程。本書在編寫過程中力求突出高職教育的特點,以“應用”為主旨和特征,以“實踐教學”為主要目的,以“培養(yǎng)學生的專業(yè)技術應用能力和職業(yè)操作技能”為教材編寫重點,注重對學生編程思想的啟發(fā)和培養(yǎng),提高他們的分析問題、解決問題的能力,將教學內容與職業(yè)培養(yǎng)目標相結合。通過本書的學習,讀者可以掌握如下技能:
JavaScript語法基礎;
處理JavaScript內置對象,如String、Array、Number、Math、RegExp等;
使用BOM、DOM控制文檔元素;
處理網頁事件;
使用不同的方式持久化數據;
訪問常見元數據,如XML、JSON。
本書主要內容
本書所討論的內容包括JavaScript基本知識和實用技術,以及不斷發(fā)展、與時俱進的新技術、新應用。內容講解由淺入深、循序漸進,將理論知識與實踐相結合,案例選取實用性強、針對性強。
第1章介紹了JavaScript腳本語言的作用和特點,如何學習JavaScript語言,如何選擇適合自己的開發(fā)工具,如何添加注釋,如何選擇瀏覽器,如何將JavaScript嵌入到HTML頁面并運行調試,以及如何養(yǎng)成良好的代碼書寫規(guī)范。
第2章介紹了JavaScript函數的基本用法,包括函數的定義及調用、參數的用法、返回值的用法、函數編寫規(guī)則。函數是JavaScript的靈魂,將函數放在本書第2章講述,以便讓后面章節(jié)的課堂案例及練習使用函數實現,使讀者切實掌握函數的用法。
第3章介紹了JavaScript編程的基本元素,包括基本數據類型、常量、變量、運算符、表達式以及類型轉換。
第4章介紹了JavaScript流程控制語句的使用,掌握選擇語句、循環(huán)語句、循環(huán)控制語句是任何程序設計語言的基本功。
第5章介紹了如何使用JavaScript自定義對象,如何私有化數據成員,使用this關鍵字訪問自身數據,使用with關鍵字簡化對象訪問,使用for...in循環(huán)訪問對象屬性,以及ECMAScript5的對象保護功能等。
第6章介紹了JavaScript本地對象,包括String、Number、Boolean、Array、Date、RegExp、Error、Global、Math對象的用法。JavaScript內置了很多對象,這使得開發(fā)工作輕松了許多。
第7章介紹了瀏覽器對象模型(BOM),包括window、history、screen、location、navigator對象的用法。通過本章的學習,讀者可以掌握創(chuàng)建新的瀏覽器窗口、獲取客戶機屏幕信息、獲取瀏覽器相關信息。
第8章介紹了文檔對象模型(DOM),包括DOM核心接口的定義、DOMHTML接口的定義、常見頁面元素的操作、表單元素的操作、DOM節(jié)點操作方法。通過本章的學習,讀者可以通過DOM對象控制頁面上的任何內容,包括修改元素屬性、驗證表單、使用畫布元素等。
第9章介紹了JavaScript事件處理,包括事件觸發(fā)、事件對象。通過本章的學習,讀者可以處理常見事件,了解DOMEvent接口,訪問事件對象。
第10章介紹了幾種元數據存儲格式以及數據持久化技術,包括XML格式、JSON格式,cookie、localStorage、sessionStorage對象。通過本章的學習,讀者可以使用JavaScript訪問XML文檔、訪問JSON數據,使用cookie、localStorage和sessionStorage對象存儲數據。
第11章綜合運用Web開發(fā)技術來制作一個完整的服飾設計網站,使用JavaScript為網站添加動態(tài)、交互效果,驗證表單數據,通過實踐提高讀者編程技法。
本書特色
1.符合初學者學習特點
本書實例豐富、技術實用、結構安排合理,知識講解循序漸進,對實例的分析清晰到位,讓讀者快速步入JavaScript開發(fā)殿堂。
2.適合學校組織教學的需要
根據教學需要,設計有針對性的練習題,注重啟發(fā)讀者編程思維。課堂案例和練習準確地覆蓋學習目標和知識要點,方便教師設計教學過程,方便學生了解學習目的。
3.內容新穎,具有技術前瞻性
本書內容新穎多樣、概念清晰、實用性強,涵蓋當前主流JavaScript應用開發(fā)技術。許多其他同類教材所介紹的技術內容比較基礎,技術更新比市場需求慢半拍。而本書更注重技術的實用性以及前瞻性,介紹了許多當前主流,或即將流行的新技術。
使用方法及課時分配
本書中有大量精彩的范例、練習題,這些素材來自作者多年來的軟件開發(fā)、教育教學經驗。本書內容在實際教學過程中運用多年,效果良好。計劃學時為108學時,建議將課時分為講解與實訓兩部分。
著作者分工
本書由曹維明擔任主編,編寫本書第6章至第11章內容。劉燕、吳劍文、趙卉擔任副主編,編寫本書第1章至第4章的內容,白建華參與編寫了第5章的內容。
在本書編寫過程中,我們本著科學、嚴謹的態(tài)度,力求精益求精,但錯誤、疏漏之處在所難免,請廣大讀者批評指正。
編者