《JavaScript忍者秘籍》是2017年11月人民郵電出版社出版的圖書,作者是[美]萊西格、貝比奧特。
基本介紹
- 中文名:JavaScript忍者秘籍
- 作者:[美]萊西格、貝比奧特
- 出版時間:2017年11月
- 出版社:人民郵電出版社
- 頁數:350 頁
- ISBN:9787115401946
- 定價:69 元
- 開本:16 開
- 裝幀:平裝
內容簡介,圖書目錄,
內容簡介
JavaScript語言非常重要,相關的技術圖書也很多,但沒有任何一本書對JavaScript語言的重要部分(函式、閉包和原型)進行深入、全面的介紹,也沒有任何一本書講述跨瀏覽器代碼的編寫。本書是jQuery庫創始人編寫的一本深入剖析JavaScript語言的書。
本書共分四個部分,從準入訓練、見習訓練、忍者訓練和火影訓練四個層次講述了逐步成為JavaScript高手的全過程。全書從高 級Web應用程式開 發者所面臨的挑戰談起,由淺入深地覆蓋了測試和測試工具、函式、閉包、對象、正則表達式、定時器、運行時代碼求值、with語句、跨瀏覽器問題、元素的特性和屬性、事件處理、DOM以及CSS選擇器等眾多核心話題;將嚴謹的理論講解和實用的代碼示例相結合,引導讀者更加深入地了解JavaScript的神奇,充分展示了JavaScript語言的各種特性。
本書適合具備一定的JavaScript基礎知識的讀者閱讀,也適合從事程式設計工作並想要深入探索JavaScript語言的讀者閱讀。
圖書目錄
第 一部分 準入訓練
第 1章 進入忍者世界 3
1.1 即將探索的JavaScript
庫 4
1.2 理解JavaScript語言 5
1.3 跨瀏覽器注意事項 6
1.4 當前**佳實踐 9
1.4.1 當前**佳實踐:測試 9
1.4.2 當前**佳實踐:性能
分析 9
1.5 總結 10
第 2章 利用測試和調試武裝
自己 11
2.1 調試代碼 12
2.1.1 日誌記錄 12
2.1.2 斷點 14
2.2 測試用例生成 15
2.3 測試框架 17
2.3.1 Qunit 19
2.3.2 YUI Test 19
2.3.3 JsUnit 19
2.3.4 新出的單元測試框架 20
2.4 測試套件基礎知識 20
2.4.1 斷言 20
2.4.2 測試組 21
2.4.3 異步測試 23
2.5 總結 25
第 二部分 見習訓練
第3章 函式是根基 29
3.1 函式的獨特之處? 30
3.1.1 JavaScript的函式式特性
為何如此重要? 31
3.1.2 使用比較器進行排序 35
3.2 函式聲明 37
3.2.1 作用域和函式 40
3.3 函式調用 44
3.3.1 從參數到函式形參 45
3.3.2 作為函式進行調用 46
3.3.3 作為方法進行調用 47
3.3.4 作為構造器進行調用 49
3.3.5 使用apply和call方法進行調用 52
3.4 總結 56
第4章 揮舞函式 57
4.1 匿名函式 57
4.2 遞歸 59
4.2.1 普通命名函式中的
遞歸 60
4.2.2 方法中的遞歸 61
4.2.3 引用的丟失問題 62
4.2.4 內聯命名函式 64
4.2.5 callee屬性 66
4.3 將函式視為對象 67
4.3.1 函式存儲 67
4.3.2 自記憶函式 69
4.3.3 偽造數組方法 71
4.4 可變長度的參數列表 73
4.4.1 使用apply( )支持可變
參數 73
4.4.2 函式重載 74
4.5 函式判斷 82
4.6 總結 83
第5章 閉包 85
5.1 閉包是如何工作的 86
5.2 使用閉包 90
5.2.1 私有變數 90
5.2.2 回調(Callback)與
計時器(timer) 92
5.3 綁定函式上下文 95
5.4 偏套用函式 98
5.5 函式重載 101
5.5.1 快取記憶 101
5.5.2 函式包裝 104
5.6 即時函式 106
5.6.1 臨時作用域和私有
變數 107
5.6.2 循環 111
5.6.3 類庫包裝 112
5.7 總結 113
第6章 原型與面向對象 115
6.1 實例化和原型 116
6.1.1 對象實例化 116
6.1.2 通過構造器判斷對象
類型 123
6.1.3 繼承與原型鏈 124
6.1.4 HTML DOM原型 128
6.2 疑難陷阱 130
6.2.1 擴展對象 130
6.2.2 擴展數字 132
6.2.3 子類化原生對象 133
6.2.4 實例化問題 134
6.3 編寫類風格的代碼 138
6.3.1 檢測函式是否可
序列化 141
6.3.2 子類的實例化 142
6.3.3 保留父級方法 142
6.4 總結 144
第7章 正則表達式 147
7.1 為什麼正則表達式
很牛 148
7.2 正則表達式進階 149
7.2.1 正則表達式解釋 149
7.2.2 術語與操作符 150
7.3 編譯正則表達式 154
7.4 捕獲匹配的片段 156
7.4.1 執行簡單的捕獲 157
7.4.2 用全局表達式進行
匹配 158
7.4.3 捕獲的引用 159
7.4.4 沒有捕獲的分組 160
7.5 利用函式進行替換 161
7.6 利用正則表達式解決常見
問題 164
7.6.1 修剪字元串 164
7.6.2 匹配換行符 166
7.6.3 Unicode 166
7.6.4 轉義字元 167
7.7 總結 168
第8章 馴服執行緒和定時器 169
8.1 定時器和執行緒是如何
工作的 170
8.1.1 設定和清除定時器 170
8.1.2 執行執行緒中的定時器
執行 170
8.1.3 Timeout與Interval之間的區別 172
8.2 定時器延遲的**小化及其
可靠性 173
8.3 處理昂貴的計算
過程 176
8.4 中央定時器控制 179
8.5 異步測試 182
8.6 總結 183
第三部分 忍者訓練
第9章 忍者點金術:運行時代碼
求值 187
9.1 代碼求值機制 187
9.1.1 用eval( )方法進行
求值 188
9.1.2 用函式構造器進行
求值 191
9.1.3 用定時器進行求值 191
9.1.4 全局作用域內的求值
操作 192
9.1.5 安全的代碼求值 194
9.2 函式反編譯 195
9.3 代碼求值實戰 198
9.3.1 JSON轉化 198
9.3.2 導入有命名空間的
代碼 199
9.3.3 JavaScript壓縮和混淆 200
9.3.4 動態重寫代碼 202
9.3.5 面向切面的腳本標籤 202
9.3.6 元語言和領域特定
語言 204
9.4 總結 207
第 10章 With語句 209
10.1 with是怎么回事? 210
10.1.1 在with作用域內引用
屬性 210
10.1.2 在with作用域內進行
賦值 211
10.1.3 性能方面的注意
事項 213
10.2 真實示例 215
10.3 導入有命名空間的
代碼 217
10.4 測試 217
10.5 使用with進行
模板化 218
10.6 總結 220
第 11章 開發跨瀏覽器
策略 223
11.1 選擇要支持的
瀏覽器 223
11.2 五大開發關注點 225
11.2.1 瀏覽器Bug和瀏覽器
差異 226
11.2.2 瀏覽器bug修復 226
11.2.3 與外部代碼(標記)一起
共存 228
11.2.4 缺失的功能 232
11.2.5 回歸 233
11.3 實現策略 235
11.3.1 安全的跨瀏覽器
修復 235
11.3.2 對象檢測 236
11.3.3 特徵仿真 238
11.3.4 不可檢測的瀏覽器
問題 241
11.4 減少假設 243
11.5 總結 244
第 12章 洞悉特性、屬性和
樣式 245
12.1 DOM特性和DOM
屬性 246
12.1.1 跨瀏覽器命名 248
12.1.2 命名限制 248
12.1.3 XML與HTML之間的
差異 249
12.1.4 自定義特性的行為 250
12.1.5 性能注事事項 250
12.2 跨瀏覽器的attribute
問題 254
12.2.1 DOM中的id/name
膨脹 254
12.2.2 URL規範化 256
12.2.3 style特性 257
12.2.4 type特性 257
12.2.5 tab index問題 258
12.2.6 節點名稱 259
12.3 令人頭疼的樣式
特性 259
12.3.1 樣式在何處? 260
12.3.2 樣式屬性命名 262
12.3.3 float樣式屬性 263
12.3.4 像素值的轉換過程 263
12.3.5 測量元素的高度和
寬度 264
12.3.6 通過opacity看
透明度 268
12.3.7 顏色屬性 270
12.4 獲取計算樣式 273
12.5 總結 276
第四部分 火影訓練
第 13章 不老事件 281
13.1 綁定和解綁事件處理
程式 282
13.2 Event對象 286
13.3 處理程式的管理 289
13.3.1 集中存儲相關信息 289
13.3.2 管理事件處理程式 292
13.4 事件觸發 300
13.4.1 自定義事件 302
13.5 冒泡與委託 306
13.5.1 將事件委託給祖先
元素 307
13.5.2 修復瀏覽器的不足 307
13.6 文檔就緒事件(documentready) 316
13.7 總結 318
第 14章 DOM操作 321
14.1 向DOM中注入
HTML 322
14.1.1 將HTML轉換成
DOM 323
14.1.2 將DOM插入到
文檔中 326
14.1.3 腳本執行 328
14.2 克隆元素 330
14.3 刪除元素 331
14.4 文本內容