第一部分 概論
第1章 從零開始
1.1 為什麼選擇JavaScript?
1.2 JavaScript的應用範圍
1.3 JavaScript的版本
1.4 一些值得留意的特性 禁忌及如何突破這些禁忌
1.5 安全性和執行效率
1.6 一個例子--JavaScript編寫的計算器
1.7 學習和使用JavaScript的幾點建議
1.8 關於本書的其餘部分
第2章 瀏覽器中的JavaScript
2.1 嵌入網頁的可執行內容
2.2 賞心悅目的特效
2.3 使用JavaScript來與用戶交互
2.4 繞開腳本陷阱 2.5 總結
第3章 開發環境和調試方法
3.1 我能用什麼來編寫腳本--適閤編寫JavaScript的文本編輯器
3.2 來自瀏覽器的支持
3.3 集成開發環境
3.4 調試工具--提升開發效率的利器
3.5 定位代碼和調用堆棧
3.6 瀏覽器捕獲異常
3.7 總結
第二部分 JavaScript核心
第4章 語言結構
4.1 JavaScript的基本文法
4.2 常量和變量
4.3 錶達式和運算符符
4.4 控製語句 句
4.5 總結
第5章 數據類型
5.1 基本數據類型
5.2 數組和對象
5.2.1 數組
5.2.2 對象--一個構造函數的例子
5.3 函數類型--一個函數和閉包的例子
5.4 神奇的null和undefined
5.4.1 null
5.4.2 undefined--獨一無二的類型
5.5 正則錶達式
5.5.1 正則錶達式常量
5.5.2 正則錶達式對象
5.6 值類型和引用類型
5.6.1 什麼是值和值的引用
5.6.2 使用值和使用引用
5.6.3 值與引用的相互轉換:裝箱和拆箱
5.7 類型識彆與類型轉換
5.7.1 運行時類型識彆--兩個運行的類型識彆的例子
5.7.2 類型的自動轉換及其例子
5.7.3 強製類型轉換及其例子
5.7.4 高級用法--一個自定義類型轉換的例子
5.8 警惕數值陷阱
5.8.1 睏惑--浮點數的精度問題
5.8.2 誤差的修正及其例子
5.9 總結
第6章 函數
6.1 函數定義和函數調用
6.1.1 函數的定義
6.1.1.1 聲明式函數定義與函數錶達式及其例子
6.1.1.2 JavaScript函數的奧妙——魔法代碼
6.1.2 函數的調用
6.2 函數的參數
6.2.1 形參與實參
6.2.2 Arguments對象
6.2.2.1 一個使用Arguments對象檢測形參的例子
6.2.2.2 一個使用Arguments對象接收任意個數參數的例子
6.2.2.3 一個使用Arguments對象模擬函數重載的例子
6.2.3 參數類型匹配--一個利用arguments實現函數重載機製的例子
6.3 函數的調用者和所有者
6.3.1 函數的調用者
6.3.2 函數的所有者--一個為函數指定所有者的例子
6.3.3 動態調用--外來的所有者
6.4 函數常量和閉包
6.4.1 匿名的函數
6.4.2 函數引用
6.4.3 函數參數和函數返迴值及其例子
6.4.4 高級用法--閉包作為局部域與延遲求值
6.5 高級抽象--Function類型和函數模版
6.5.1 動態創建函數--一個利用Function實現Lambda算子的例子
6.5.2 模式--函數工廠及其實例
6.6 總結
第7章 對象
7.1 什麼是對象
7.2 對象的屬性和方法
7.2.1 對象的內置屬性
7.2.2 為對象添加和刪除屬性
7.2.3 反射機製--枚舉對象屬性
7.3 對象的構造
7.3.1 構造函數--一個雙精度浮點數封裝類的例子
7.3.2 缺省構造和拷貝構造
7.3.3 對象常量
7.4 對象的銷毀和存儲單元的迴收
7.5 JavaScript的內置對象
7.5.1 Math對象
7.5.2 Date對象--創建一個簡單的日曆
7.5.3 Error對象
7.5.4 其他內置對象
7.5.5 特殊的對象--全局對象與調用對象
7.6 總結
第8章 集閤
8.1 數組和數組元素
8.1.1 數組的構造
8.1.2 數組常量
8.1.3 數組元素
8.2 數組對象和方法
8.2.1 查找元素
8.2.2 添加和刪除元素
8.2.3 集閤操作及其範例
8.2.3.1 join()方法
8.2.3.2 reverse()方法
8.2.3.3 sort()方法
8.2.3.4 concat()方法
8.2.3.5 slice()方法
8.2.3.6 splice()方法
8.2.3.7 toSgring()方法和toLocaleString()方法
8.3 哈希錶
8.3.1 什麼是哈希錶
8.3.2 哈希錶的構造
8.3.3 實現一個簡單的HashTable類型
8.4 高級用法--集閤操作和閉包
8.5 總結
第9章 字符串
9.1 字符串的構造
9.1.1 字符串常量
9.1.2 轉義序列
9.1.3 字符串構造函數
9.2 字符串的使用
9.2.1 比較字符串
9.2.2 抽取和檢索子串
9.2.3 連接拆分字符串
9.2.4 字符串的模式匹配--一個字符串格式校驗的例子
9.2.5 其他方法
9.3 字符串與字符數組
9.4 字符串與文本處理--JavaScript棋譜閱讀器(一)
9.4.1 需求分析--什麼是棋譜和棋譜閱讀器
9.4.2 係統設計--棋譜和棋盤數據的字符串描述
9.4.3 係統實現--解析和處理棋譜
9.4.4 完整的棋譜閱讀器
9.5 總結
第10章 正則錶達式
10.1 什麼是正則錶達式
10.1.1 正則錶達式的概念
10.1.2 JavaScript中的正則錶達式
10.2 正則錶達式的規則
10.2.1 直接量字符
10.2.2 字符類和布爾操作
10.2.3 重復
10.2.4 選擇、分組和引用
10.2.5 指定匹配的位置
10.2.6 標誌——高級模式匹配的規則
10.3 模式匹配
10.3.1 用於模式匹配的String方法及其例子
10.3.2 用於模式匹配的RegExp方法
10.3.2.1 一個使用exec()方法從身份證號碼獲取生日的例子
10.3.2.2 一個使用test()方法遍曆字符串的例子
10.4 關於正則錶達式包裝對象
10.4.1 RegExp對象——利用正則錶達式實現全文檢索
10.4.2 RegExp的實例屬性
10.5 強大的正則錶達式
10.5.1 分析正則錶達式的局部
10.5.2 一個例子--強大的在綫編輯器
10.5.3 構造新的文法--一個在JSVM中實現JSVM2解析器的例子
10.6 高級用法
10.7 用正則錶達式處理文本
10.7.1 創建一個計價公式編輯器
10.7.1.1 需求分析--什麼是計價公式編輯器
10.7.1.2 係統實現--計價公式編輯器的實現
10.7.2 創建一個同步滾動歌詞播放器
10.7.2.1 需求分析--什麼是同步滾動歌詞播放器
10.7.2.2 係統設計與實現--處理LRC歌詞
10.8 總結
第三部分 瀏覽器與DOM
第11章 瀏覽器對象
11.1 Window對象--最基本的瀏覽器對象
11.1.1 Window對象概覽
11.1.2 Window對象的生命周期
11.1.3 Window對象的屬性和方法
11.1.4 一個多窗口應用的例子
11.2 Document對象--瀏覽器窗口文檔內容的代錶
11.2.1 Document對象概覽
11.2.2 動態生成的文檔
11.2.3 Document對象的基本信息
11.2.4 Document對象的外觀屬性
11.2.5 Document子對象接口
11.2.5.1 一個遍曆Anchors對象的例子
11.2.5.2 一個顛倒圖片的例子
11.3 對話框和狀態欄
11.3.1 創建一個簡單對話框
11.3.2 其他類型的對話框
11.3.2.1 模擬對話框--創建一個窗口對話框及一個對話框阻塞進行的例子
11.3.2.2 showModalDialog和showModelessDialog--非W3C或ECMAScrip標準
11.3.3 狀態欄
11.4 框架--上層的Window對象
11.4.1 多框架應用
11.4.2 框架之間的關係
11.4.3 框架的命名
11.4.4 子框架中的JavaScript
11.4.5 框架的應用--多頁簽顯示
11.4.5.1 什麼是頁簽
11.4.5.2 頁簽的實現--創建一個包含頁簽的頁麵
11.5 錶單和錶單對象
11.5.1 Form對象及其範例
11.5.2 定義錶單元素
11.5.3 客戶端錶單校驗及其例子
11.5.4 創建一款通用的客戶端錶單校驗組件
11.6 其他內置對象
11.6.1 Navigator對象--瀏覽器總體信息的代錶
11.6.2 Screen對象--提供顯示器分辨率和可用顔色數量信息
11.6.3 Location對象--當前窗口中顯示文檔的URL的代錶
11.6.4 History對象--一個有趣的對象
11.7 總結
第12章 文檔對象模型
12.1 什麼是DOM
12.1.1 把文檔錶示為樹
12.1.2 樹的節點
12.1.3 DOM對象的通用屬性和方法
12.1.4 HTML結構和DOM對象的關係--用JavaScript通過DOM來操作HTML文檔
12.2 DOM與瀏覽器實現
12.2.1 關於DOM HTML API
12.2.2 DOM的級彆和特性
12.2.3 DOM的一緻性
12.2.4 差異性--瀏覽器的DOM方言
12.3 一組“盒子”--DOM元素
12.3.1 嵌套的“盒子”
12.3.2 “盒子”和“盒子”內容的分類
12.4 創建和刪除節點
12.4.1 構造全新的節點
12.4.2 平麵展開--通過文檔元素直接創建
12.4.3 迴收空間--刪除不用的節點
12.5 訪問和操縱DOM節點
12.5.1 打開每一個盒子--遍曆節點
12.5.2 弄清層級關係--父子與兄弟
12.5.3 如何搜索特定節點
12.5.4 剋隆節點--一個使用cloneNode()復製錶格的例子
12.5.5 移動節點及其範例
12.5.6 關於添加新行和排序的小技巧
12.6 讀寫數據--添加、修改和刪除屬性
12.7 外觀與行為
12.7.1 DOM樣式屬性
12.7.2 控製DOM元素的顯示與隱藏
12.7.3 改變顔色和大小--一個簡單有趣的例子
12.7.4 改變位置--創建一個繞圓圈鏇轉的文字
12.7.5 編輯控製及其範例
12.7.6 改變樣式及其範例
12.7.7 改變行為
12.8 XML DOM
12.8.1 什麼是XML DOM
12.8.2 如何使用XML DOM--一個利用XML實現多級關聯下拉選擇框的例子
12.9 總結
第13章 事件處理
13.1 什麼是事件
13.1.1 消息與事件響應
13.1.2 瀏覽器的事件驅動機製
13.2 基本事件處理
13.2.1 事件和事件類型
13.2.2 事件的綁定
13.2.3 直接調用事件處理函數
13.2.4 事件處理函數的返迴值
13.2.5 帶參數的事件響應及其例子
13.2.6 “this”關鍵字
13.3 標準事件模型
13.3.1 起泡和捕捉--瀏覽器的事件傳播
13.3.2 事件處理函數的注冊
13.3.3 把對象注冊為事件處理程序
13.3.4 事件模塊和事件類型
13.3.5 關於Event接口
13.3.5.1 Event接口的屬性和方法
13.3.5.2 UIEvent接口的屬性
13.3.5.3 MouseEvent接口的屬性
13.3.5.4 MutationEvent接口
13.3.6 混閤事件模型
13.3.7 閤成事件
13.4 瀏覽器的事件處理模型實現
13.4.1 Internet Explorer事件模型
13.4.1.1 關於IE事件注冊
13.4.1.2 IE Event對象的屬性
13.4.1.3 IE中的事件起泡
13.4.2 Netscape 4事件模型
13.4.2.1 Netscape 4中的事件捕捉及其範例
13.4.2.2 Netscape 4 Event對象的屬性
13.5 迴調與用戶自定義事件
13.5.1 事件處理模式--一個實現簡單事件處理模式的例子
13.5.2 用戶事件接口的定義
13.5.3 事件代理和事件注冊--一個實現標準事件接口的例子
13.5.4 標準模式--事件分派和接收
13.6 一個例子--增強數據錶格
13.6.1 什麼是增強數據錶格
13.6.2 一個采用兩重table嵌套方式固定錶頭的例子
13.6.3 可變列寬的實現
13.6.4 標記行--呈現有彆於其他行的背景色
13.6.5 小技巧--將代碼添加到樣式錶
13.7 總結
第14章 級聯樣式錶
14.1 什麼是級聯樣式錶
14.1.1 CSS樣式和樣式錶
14.1.2 CSS的標準化
14.1.3 瀏覽器支持的CSS
14.2 JavaScript與CSS
14.2.1 CSS和DOM的關係
14.2.2 CSS和IE的關係
14.2.3 瀏覽器的CSS兼容性
14.3 控製CSS改變頁麵風格
14.3.1 實現結構與錶現的分離及其範例
14.3.2 使用JwaScript和CSS實現頁麵多種風格的實時替換
14.4 總結
第15章 數據存儲的腳本化
15.1 什麼是cookie
15.1.1 瀏覽器和客戶端cookie
15.1.2 cookie的屬性
15.2 cookie的客戶端存取
15.2.1 cookie的存儲
15.2.2 cookie的讀取
15.3 cookie的限製
15.4 cookie示例--讓問候更加溫暖
15.5 cookie對象的封裝
15.6 什麼是userData
15.6.1 瀏覽器和客戶端userData
15.6.2 userData的聲明
15.6.3 userData的屬性和方法
15.7 userData的客戶端存取
15.7.1 userData的存儲和讀取
15.7.2 userData的安全性
15.8 userData的限製
15.9 userData與cookie的對比
15.10 userData示例--一個利用userData實現客戶端保存錶單數據的例子
15.11 總結
第四部分 數據交互
第16章 同步和異步
16.1 什麼是同步和異步
16.2 超時設定和時間間隔
16.3 定時器使用--偵聽與攔截
16.3.1 標準模式--監視器及其範例
16.3.2 使用定時器時應當注意的問題
16.4 一個例子--漂亮的Web時鍾
16.4.1 什麼是Web時鍾?
16.4.2 最簡單的Web時鍾
16.4.3 Web時鍾的設計
16.4.4 完整的Web時鍾源代碼
16.5 總結
第17章 XML DOM和XML HTTP
17.1 什麼是XML DOM對象
17.1.1 XML DOM簡介
17.1.2 瀏覽器支持的XML DOM接口
17.1.2.1 XML DOM標準接口
17.1.2.2 IE的XML DOM組件
17.1.2.3 操作XML文檔--一個使用MSXML操作XML文檔的例子
17.2 XML DOM的版本兼容性--XML DOM的跨瀏覽器應用
17.3 XML DOM的錯誤處理
17.3.1 處理錯誤信息的ParseError對象
17.3.2 包含錯誤信息的文檔
17.4 XML DOM操作XML文檔
17.4.1 訪問節點
17.4.2 創建新節點
17.4.3 移動和修改節點及其範例
17.4.4 讀寫節點屬性和讀寫數據
17.4.5 保存文檔
17.5 一個例子--JavaScript棋譜閱讀器(二)
17.5.1 用XML描述棋譜
17.5.2 將XML棋譜轉換為SGF棋譜
17.6 什麼是XML HTTP對象
17.6.1 XML HTTP對象簡介
17.6.2 瀏覽器支持的XML HTTP對象
17.7 通過XML HTTP發送請求
17.7.1 建立連接
17.7.2 發送請求
17.8 讀取和設定HTTP頭
17.8.1 什麼是HTTP頭
17.8.2 讀取和設定HTTP頭
17.9 服務器應答
17.9.1 同步和異步應答及其例子
17.9.2 包含應答文本內容的ResponseText 和ResponseXML
17.10 總結
第18章 Ajax簡介
第19章 標準和兼容性
第20章 信息安全
第五部分 超越JavaScript
第21章 麵嚮對象
第22章 閉包與函數式編程
第23章 模塊級管理
第24章 動態構建
第25章 執行效率
25.1 為什麼要討論執行效率
25.2 封閉的代價
25.3 盒子裏的流火
25.4 動態--魔鬼與天使
25.5 讓代碼輕舞飛揚
25.6 總結
第26章 應用框架
26.1 應用框架概覽
26.2 為什麼要設計應用框架
26.3 如何設計應用框架
26.4 框架的實際應用--在Silverna 2.0框架上開發的Widgets
26.5 已存在的應用框架
26.6 總結
· · · · · · (
收起)