JavaScript高級程序設(shè)計第四版
目錄:
第 1 章 什么是 JavaScript ............................ 1
1.1 簡短的歷史回顧 .......................................? 1
1.2 JavaScript 實現(xiàn) .........................................? 2
1.2.1 ECMAScript ..................................? 2
1.2.2 DOM .............................................? 6
1.2.3 BOM ..............................................? 8
1.3 JavaScript 版本 .........................................? 9
1.4 小結(jié) .........................................................? 10
第 2 章 HTML 中的 JavaScript ...................? 11
2.1? <script> 元素 .........................................? 11
2.1.1 標(biāo)簽位置 ......................................? 13
2.1.2 推遲執(zhí)行腳本 ..............................? 14
2.1.3 異步執(zhí)行腳本 ..............................? 14
2.1.4 動態(tài)加載腳本 ..............................? 15
2.1.5 XHTML 中的變化 ........................? 16
2.1.6 廢棄的語法 ..................................? 17
2.2 行內(nèi)代碼與外部文件 ...............................? 18
2.3 文檔模式 ..................................................? 18
2.4? <noscript> 元素 ....................................? 19
2.5 小結(jié) .........................................................? 20
第 3 章 語言基礎(chǔ) ............................................? 21
3.1 語法 .........................................................? 21
3.1.1 區(qū)分大小寫 ..................................? 21
3.1.2 標(biāo)識符 ..........................................? 21
3.1.3 注釋 ..............................................? 22
3.1.4 嚴格模式 ......................................? 22
3.1.5 語句 ..............................................? 22
3.2 關(guān)鍵字與保留字 ......................................? 23
3.3 變量 .........................................................? 24
3.3.1? var 關(guān)鍵字 ..................................? 24
3.3.2? let 聲明 ......................................? 25
3.3.3? const 聲明 ..................................? 28
3.3.4 聲明風(fēng)格及最佳實踐 ...................? 29
3.4 數(shù)據(jù)類型 ..................................................? 30
3.4.1? typeof 操作符 ............................? 30
3.4.2? Undefined 類型 .........................? 30
3.4.3? Null 類型 ....................................? 32
3.4.4? Boolean 類型 ..............................? 33
3.4.5? Number 類型 ................................? 33
3.4.6? String 類型 ................................? 38
3.4.7? Symbol 類型 ................................? 44
3.4.8? Object 類型 ................................? 56
3.5 操作符 .....................................................? 56
3.5.1 一元操作符 ..................................? 56
3.5.2 位操作符 ......................................? 59
3.5.3 布爾操作符 ..................................? 64
3.5.4 乘性操作符 ..................................? 66
3.5.5 指數(shù)操作符 ..................................? 67
3.5.6 加性操作符 ..................................? 68
3.5.7 關(guān)系操作符 ..................................? 69
3.5.8 相等操作符 ..................................? 70
3.5.9 條件操作符 ..................................? 72
3.5.10 賦值操作符 ................................? 72
3.5.11 逗號操作符 ................................? 73
3.6 語句 .........................................................? 73
3.6.1? if 語句 ........................................? 73
3.6.2? do-while 語句 ............................? 74
3.6.3? while 語句 ..................................? 74
xiv 目 錄
3.6.4? for 語句 ......................................? 74
3.6.5? for-in 語句 ................................? 75
3.6.6? for-of 語句 ................................? 76
3.6.7 標(biāo)簽語句 ......................................? 76
3.6.8? break 和 continue 語句 ...........? 76
3.6.9? with 語句 ....................................? 78
3.6.10? switch 語句 ..............................? 78
3.7 函數(shù) .........................................................? 80
3.8 小結(jié) .........................................................? 82
第 4 章 變量推掸、作用域與內(nèi)存 .......................? 83
4.1 原始值與引用值 ......................................? 83
4.1.1 動態(tài)屬性 ......................................? 83
4.1.2 復(fù)制值 ..........................................? 84
4.1.3 傳遞參數(shù) ......................................? 85
4.1.4 確定類型 ......................................? 86
4.2 執(zhí)行上下文與作用域 ..............................? 87
4.2.1 作用域鏈增強 ..............................? 89
4.2.2 變量聲明 ......................................? 90
4.3 垃圾回收 .................................................? 94
4.3.1 標(biāo)記清理 ......................................? 95
4.3.2 引用計數(shù) ......................................? 95
4.3.3 性能 .............................................? 96
4.3.4 內(nèi)存管理 ......................................? 97
4.4 小結(jié) .......................................................? 101
第 5 章 基本引用類型 .................................? 103
5.1? Date ......................................................? 103
5.1.1 繼承的方法 ................................? 105
5.1.2 日期格式化方法 ........................? 106
5.1.3 日期/時間組件方法 ...................? 106
5.2? RegExp ..................................................? 107
5.2.1? RegExp 實例屬性 ......................? 109
5.2.2? RegExp 實例方法 ......................? 109
5.2.3? RegExp 構(gòu)造函數(shù)屬性 ..............? 111
5.2.4 模式局限 ....................................? 113
5.3 原始值包裝類型 ....................................? 113
5.3.1? Boolean ....................................? 114
5.3.2? Number ......................................? 115
5.3.3? String ......................................? 117
5.4 單例內(nèi)置對象 ........................................? 128
5.4.1? Global ......................................? 128
5.4.2? Math ..........................................? 132
5.5 小結(jié) .......................................................? 135
第 6 章 集合引用類型 .................................? 136
6.1? Object ..................................................? 136
6.2? Array ....................................................? 138
6.2.1 創(chuàng)建數(shù)組 ....................................? 138
6.2.2 數(shù)組空位 ....................................? 140
6.2.3 數(shù)組索引 ....................................? 141
6.2.4 檢測數(shù)組 ....................................? 142
6.2.5 迭代器方法 ................................? 143
6.2.6 復(fù)制和填充方法 ........................? 143
6.2.7 轉(zhuǎn)換方法 ....................................? 145
6.2.8 棧方法 .......................................? 147
6.2.9 隊列方法 ....................................? 147
6.2.10 排序方法 ..................................? 148
6.2.11 操作方法 ..................................? 150
6.2.12 搜索和位置方法 ......................? 151
6.2.13 迭代方法 ..................................? 153
6.2.14 歸并方法 ..................................? 154
6.3 定型數(shù)組 ...............................................? 155
6.3.1 歷史 ...........................................? 155
6.3.2? ArrayBuffer ............................? 155
6.3.3? DataView ..................................? 156
6.3.4 定型數(shù)組 ....................................? 159
6.4? Map ........................................................? 163
6.4.1 基本 API ....................................? 164
6.4.2 順序與迭代 ................................? 166
6.4.3 選擇 Object 還是 Map ..............? 168
6.5? WeakMap ................................................? 168
6.5.1 基本 API ....................................? 168
6.5.2 弱鍵 ...........................................? 170
6.5.3 不可迭代鍵 ................................? 170
6.5.4 使用弱映射 ................................? 171
目 錄 xv
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
17
6.6? Set .........................................................? 173
6.6.1 基本 API .....................................? 173
6.6.2 順序與迭代 ................................? 175
6.6.3 定義正式集合操作 .....................? 176
6.7? WeakSet ................................................? 178
6.7.1 基本 API .....................................? 178
6.7.2 弱值 ............................................? 179
6.7.3 不可迭代值 ................................? 180
6.7.4 使用弱集合 ................................? 180
6.8 迭代與擴展操作 ....................................? 180
6.9 小結(jié) .......................................................? 182
第 7 章 迭代器與生成器 .............................? 183
7.1 理解迭代 ................................................? 183
7.2 迭代器模式 ............................................? 184
7.2.1 可迭代協(xié)議 ................................? 184
7.2.2 迭代器協(xié)議 ................................? 186
7.2.3 自定義迭代器 ............................? 188
7.2.4 提前終止迭代器 .........................? 190
7.3 生成器 ....................................................? 192
7.3.1 生成器基礎(chǔ) ................................? 192
7.3.2 通過 yield 中斷執(zhí)行 ................? 194
7.3.3 生成器作為默認迭代器 .............? 201
7.3.4 提前終止生成器 .........................? 202
7.4 小結(jié) .......................................................? 204
第 8 章 對象、類與面向?qū)ο缶幊?............? 205
8.1 理解對象 ................................................? 205
8.1.1 屬性的類型 ................................? 206
8.1.2 定義多個屬性 ............................? 208
8.1.3 讀取屬性的特性 .........................? 209
8.1.4 合并對象 ....................................? 210
8.1.5 對象標(biāo)識及相等判定 .................? 213
8.1.6 增強的對象語法 .........................? 213
8.1.7 對象解構(gòu) ....................................? 216
8.2 創(chuàng)建對象 ................................................? 220
8.2.1 概述 ............................................? 220
8.2.2 工廠模式 ....................................? 220
8.2.3 構(gòu)造函數(shù)模式 ............................? 221
8.2.4 原型模式 ....................................? 224
8.2.5 對象迭代 ....................................? 233
8.3 繼承 .......................................................? 238
8.3.1 原型鏈 ........................................? 238
8.3.2 盜用構(gòu)造函數(shù) ............................? 243
8.3.3 組合繼承 ....................................? 244
8.3.4 原型式繼承 ................................? 245
8.3.5 寄生式繼承 ................................? 246
8.3.6 寄生式組合繼承 ........................? 247
8.4 類 ...........................................................? 249
8.4.1 類定義 ........................................? 249
8.4.2 類構(gòu)造函數(shù) ................................? 250
8.4.3 實例敛熬、原型和類成員 .................? 254
8.4.4 繼承 ............................................? 258
8.5 小結(jié) .......................................................? 265
第 9 章 代理與反射 .....................................? 266
9.1 代理基礎(chǔ) ................................................? 266
9.1.1 創(chuàng)建空代理 ................................? 266
9.1.2 定義捕獲器 ................................? 267
9.1.3 捕獲器參數(shù)和反射 API .............? 268
9.1.4 捕獲器不變式 ............................? 270
9.1.5 可撤銷代理 ................................? 271
9.1.6 實用反射 API .............................? 271
9.1.7 代理另一個代理 ........................? 273
9.1.8 代理的問題與不足 .....................? 273
9.2 代理捕獲器與反射方法 .........................? 274
9.2.1? get() .........................................? 275
9.2.2? set() .........................................? 275
9.2.3? has() .........................................? 276
9.2.4? defineProperty() .................? 277
9.2.5? getOwnProperty-
Descriptor() ..........................? 277
9.2.6? deleteProperty() .................? 278
9.2.7? ownKeys() ................................? 279
9.2.8? getPrototypeOf() .................? 279
9.2.9? setPrototypeOf() .................? 280
xvi 目 錄
9.2.10? isExtensible() ....................? 280
9.2.11? preventExtensions() .........? 281
9.2.12? apply() ..................................? 281
9.2.13? construct() ..........................? 282
9.3 代理模式 ...............................................? 283
9.3.1 跟蹤屬性訪問 ............................? 283
9.3.2 隱藏屬性 ....................................? 283
9.3.3 屬性驗證 ....................................? 284
9.3.4 函數(shù)與構(gòu)造函數(shù)參數(shù)驗證 .........? 284
9.3.5 數(shù)據(jù)綁定與可觀察對象 .............? 285
9.4 小結(jié) .......................................................? 286
第 10 章 函數(shù) ................................................? 287
10.1 箭頭函數(shù) ..............................................? 288
10.2 函數(shù)名 .................................................? 289
10.3 理解參數(shù) ..............................................? 290
10.4 沒有重載 ..............................................? 292
10.5 默認參數(shù)值 ..........................................? 293
10.6 參數(shù)擴展與收集 ..................................? 295
10.6.1 擴展參數(shù) ................................? 295
10.6.2 收集參數(shù) ................................? 296
10.7 函數(shù)聲明與函數(shù)表達式 .......................? 297
10.8 函數(shù)作為值 ..........................................? 297
10.9 函數(shù)內(nèi)部 ..............................................? 299
10.9.1? arguments ............................? 299
10.9.2? this .......................................? 300
10.9.3? caller ...................................? 301
10.9.4? new.target ..........................? 301
10.10 函數(shù)屬性與方法 ................................? 302
10.11 函數(shù)表達式 ........................................? 304
10.12 遞歸 ...................................................? 306
10.13 尾調(diào)用優(yōu)化 ........................................? 307
10.13.1 尾調(diào)用優(yōu)化的條件 .............? 307
10.13.2 尾調(diào)用優(yōu)化的代碼 .............? 309
10.14 閉包 ...................................................? 309
10.14.1? this 對象 ..........................? 312
10.14.2 內(nèi)存泄漏 ............................? 314
10.15 立即調(diào)用的函數(shù)表達式 .....................? 314
10.16 私有變量 ...........................................? 316
10.16.1 靜態(tài)私有變量 ....................? 317
10.16.2 模塊模式 ............................? 318
10.16.3 模塊增強模式 ....................? 320
10.17 小結(jié) ...................................................? 321
第 11 章 期約與異步函數(shù) ...........................? 322
11.1 異步編程 .............................................? 322
11.1.1 同步與異步 ............................? 322
11.1.2 以往的異步編程模式 .............? 323
11.2 期約 .....................................................? 325
11.2.1 Promises/A+規(guī)范 ...................? 325
11.2.2 期約基礎(chǔ) ................................? 325
11.2.3 期約的實例方法 ....................? 329
11.2.4 期約連鎖與期約合成 .............? 338
11.2.5 期約擴展 ................................? 345
11.3 異步函數(shù) .............................................? 347
11.3.1 異步函數(shù) ................................? 348
11.3.2 停止和恢復(fù)執(zhí)行 ....................? 353
11.3.3 異步函數(shù)策略 ........................? 356
11.4 小結(jié) .....................................................? 360
第 12 章 BOM ..............................................? 361
12.1? window 對象 .......................................? 361
12.1.1? Global 作用域 ......................? 361
12.1.2 窗口關(guān)系 ................................? 362
12.1.3 窗口位置與像素比 ................? 362
12.1.4 窗口大小 ................................? 363
12.1.5 視口位置 ................................? 364
12.1.6 導(dǎo)航與打開新窗口 ................? 365
12.1.7 定時器 ....................................? 368
12.1.8 系統(tǒng)對話框 ............................? 370
12.2? location 對象 ...................................? 372
12.2.1 查詢字符串 ............................? 372
12.2.2 操作地址 ................................? 373
12.3? navigator 對象 .................................? 375
12.3.1 檢測插件 ................................? 376
12.3.2 注冊處理程序 ........................? 378
目 錄 xvii
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
17
12.4? screen 對象 ........................................? 379
12.5? history 對象 ......................................? 379
12.5.1 導(dǎo)航 ........................................? 379
12.5.2 歷史狀態(tài)管理 .........................? 380
12.6 小結(jié) .....................................................? 381
第 13 章 客戶端檢測 ...................................? 382
13.1 能力檢測 ..............................................? 382
13.1.1 安全能力檢測 .........................? 383
13.1.2 基于能力檢測進行瀏覽器
分析 ........................................? 384
13.2 用戶代理檢測 ......................................? 386
13.2.1 用戶代理的歷史 .....................? 386
13.2.2 瀏覽器分析 ............................? 392
13.3 軟件與硬件檢測 ..................................? 394
13.3.1 識別瀏覽器與操作系統(tǒng) .........? 394
13.3.2 瀏覽器元數(shù)據(jù) .........................? 395
13.3.3 硬件 ........................................? 400
13.4 小結(jié) .....................................................? 400
第 14 章 DOM ...............................................? 401
14.1 節(jié)點層級 ..............................................? 401
14.1.1? Node 類型 ..............................? 402
14.1.2? Document 類型 ......................? 407
14.1.3? Element 類型 ........................? 414
14.1.4? Text 類型 ..............................? 420
14.1.5? Comment 類型 ........................? 423
14.1.6? CDATASection 類型 ..............? 423
14.1.7? DocumentType 類型 ..............? 424
14.1.8? DocumentFragment 類型 .....? 424
14.1.9? Attr 類型 ..............................? 425
14.2 DOM 編程 ............................................? 426
14.2.1 動態(tài)腳本 ................................? 426
14.2.2 動態(tài)樣式 ................................? 428
14.2.3 操作表格 ................................? 429
14.2.4 使用 NodeList ......................? 431
14.3? MutationObserver 接口 ...................? 432
14.3.1 基本用法 ................................? 433
14.3.2? MutationObserverInit
與觀察范圍 ............................? 437
14.3.3 異步回調(diào)與記錄隊列 .............? 442
14.3.4 性能锤灿、內(nèi)存與垃圾回收 .........? 443
14.4 小結(jié) .....................................................? 444
第 15 章 DOM 擴展 .....................................? 445
15.1 Selectors API .......................................? 445
15.1.1? querySelector() ................? 445
15.1.2? querySelectorAll() .........? 446
15.1.3? matches() ............................? 447
15.2 元素遍歷 ..............................................? 447
15.3 HTML5 ................................................? 448
15.3.1 CSS 類擴展 ............................? 448
15.3.2 焦點管理 ................................? 450
15.3.3? HTMLDocument 擴展 .............? 450
15.3.4 字符集屬性 ............................? 451
15.3.5 自定義數(shù)據(jù)屬性 .....................? 451
15.3.6 插入標(biāo)記 ................................? 452
15.3.7? scrollIntoView() ..............? 456
15.4 專有擴展 ..............................................? 456
15.4.1? children 屬性 ......................? 456
15.4.2? contains() 方法 ...................? 457
15.4.3 插入標(biāo)記 ................................? 457
15.4.4 滾動 ........................................? 459
15.5 小結(jié) .....................................................? 459
第 16 章 DOM2 和 DOM3 .........................? 460
16.1 DOM 的演進 ........................................? 460
16.1.1 XML 命名空間 .......................? 461
16.1.2 其他變化 ................................? 464
16.2 樣式 .....................................................? 467
16.2.1 存取元素樣式 ........................? 467
16.2.2 操作樣式表 ............................? 470
16.2.3 元素尺寸 ................................? 472
16.3 遍歷 .....................................................? 476
16.3.1? NodeIterator ......................? 478
16.3.2? TreeWalker ..........................? 480
xviii 目 錄
16.4 范圍 .....................................................? 481
16.4.1 DOM 范圍 ..............................? 482
16.4.2 簡單選擇 ................................? 482
16.4.3 復(fù)雜選擇 ................................? 483
16.4.4 操作范圍 ................................? 484
16.4.5 范圍插入 ................................? 486
16.4.6 范圍折疊 ................................? 487
16.4.7 范圍比較 ................................? 488
16.4.8 復(fù)制范圍 ................................? 489
16.4.9 清理 ........................................? 489
16.5 小結(jié) .....................................................? 489
第 17 章 事件 ................................................? 490
17.1 事件流 .................................................? 490
17.1.1 事件冒泡 ................................? 490
17.1.2 事件捕獲 ................................? 491
17.1.3 DOM 事件流 ..........................? 492
17.2 事件處理程序 ......................................? 493
17.2.1 HTML 事件處理程序 .............? 493
17.2.2 DOM0 事件處理程序 .............? 495
17.2.3 DOM2 事件處理程序 .............? 495
17.2.4 IE 事件處理程序 ....................? 497
17.2.5 跨瀏覽器事件處理程序 .........? 498
17.3 事件對象 ..............................................? 499
17.3.1 DOM 事件對象 ......................? 499
17.3.2 IE 事件對象 ............................? 502
17.3.3 跨瀏覽器事件對象 .................? 503
17.4 事件類型 ..............................................? 505
17.4.1 用戶界面事件 ........................? 506
17.4.2 焦點事件 ................................? 510
17.4.3 鼠標(biāo)和滾輪事件 .....................? 510
17.4.4 鍵盤與輸入事件 .....................? 518
17.4.5 合成事件 ................................? 522
17.4.6 變化事件 ................................? 523
17.4.7 HTML5 事件 ..........................? 523
17.4.8 設(shè)備事件 ................................? 528
17.4.9 觸摸及手勢事件 .....................? 531
17.4.10 事件參考 ..............................? 534
17.5 內(nèi)存與性能 ..........................................? 540
17.5.1 事件委托 ................................? 540
17.5.2 刪除事件處理程序 ................? 541
17.6 模擬事件 .............................................? 543
17.6.1 DOM 事件模擬 ......................? 543
17.6.2 IE 事件模擬 ...........................? 547
17.7 小結(jié) .....................................................? 548
第 18 章 動畫與 Canvas 圖形 ..................? 549
18.1 使用 requestAnimationFrame ........? 549
18.1.1 早期定時動畫 ........................? 549
18.1.2 時間間隔的問題 ....................? 550
18.1.3? requestAnimationFrame ...? 550
18.1.4? cancelAnimationFrame .....? 551
18.1.5 通過 requestAnimation-
Frame 節(jié)流 ............................? 551
18.2 基本的畫布功能 ..................................? 552
18.3 2D 繪圖上下文 ....................................? 553
18.3.1 填充和描邊 ............................? 554
18.3.2 繪制矩形 ................................? 554
18.3.3 繪制路徑 ................................? 556
18.3.4 繪制文本 ................................? 558
18.3.5 變換 .......................................? 560
18.3.6 繪制圖像 ................................? 562
18.3.7 陰影 .......................................? 563
18.3.8 漸變 .......................................? 564
18.3.9 圖案 .......................................? 566
18.3.10 圖像數(shù)據(jù) ..............................? 566
18.3.11 合成 .....................................? 567
18.4 WebGL ................................................? 569
18.4.1 WebGL 上下文 ......................? 569
18.4.2 WebGL 基礎(chǔ) ..........................? 569
18.4.3 WebGL1 與 WebGL2 .............? 579
18.5 小結(jié) .....................................................? 579
第 19 章 表單腳本 .......................................? 581
19.1 表單基礎(chǔ) .............................................? 581
19.1.1 提交表單 ................................? 582
19.1.2 重置表單 ................................? 583
圖靈社區(qū)會員 守候1268() 專享 尊重版權(quán)
目 錄 xix
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
17
19.1.3 表單字段 ................................? 583
19.2 文本框編程 ..........................................? 587
19.2.1 選擇文本 ................................? 588
19.2.2 輸入過濾 ................................? 590
19.2.3 自動切換 ................................? 593
19.2.4 HTML5 約束驗證 API ...........? 594
19.3 選擇框編程 ..........................................? 597
19.3.1 選項處理 ................................? 598
19.3.2 添加選項 ................................? 599
19.3.3 移除選項 ................................? 600
19.3.4 移動和重排選項 .....................? 601
19.4 表單序列化 ..........................................? 601
19.5 富文本編輯 ..........................................? 603
19.5.1 使用 contenteditable .......? 603
19.5.2 與富文本交互 .........................? 604
19.5.3 富文件選擇 ............................? 606
19.5.4 通過表單提交富文本 .............? 607
19.6 小結(jié) .....................................................? 608
第 20 章 JavaScript API ............................? 609
20.1 Atomics 與 SharedArrayBuffer .......? 609
20.1.1? SharedArrayBuffer ............? 610
20.1.2 原子操作基礎(chǔ) .........................? 611
20.2 跨上下文消息 ......................................? 616
20.3 Encoding API .......................................? 617
20.3.1 文本編碼 ................................? 617
20.3.2 文本解碼 ................................? 619
20.4 File API 與 Blob API ...........................? 622
20.4.1? File 類型 ..............................? 622
20.4.2? FileReader 類型 ..................? 622
20.4.3? FileReaderSync 類型 .........? 624
20.4.4? Blob 與部分讀取 ...................? 624
20.4.5 對象 URL 與 Blob .................? 625
20.4.6 讀取拖放文件 .........................? 626
20.5 媒體元素 ..............................................? 627
20.5.1 屬性 ........................................? 627
20.5.2 事件 ........................................? 628
20.5.3 自定義媒體播放器 .................? 629
20.5.4 檢測編解碼器 ........................? 630
20.5.5 音頻類型 ................................? 631
20.6 原生拖放 ..............................................? 631
20.6.1 拖放事件 ................................? 631
20.6.2 自定義放置目標(biāo) .....................? 632
20.6.3? dataTransfer 對象 .............? 632
20.6.4? dropEffect 與
effectAllowed ....................? 633
20.6.5 可拖動能力 ............................? 634
20.6.6 其他成員 ................................? 634
20.7 Notifications API .................................? 635
20.7.1 通知權(quán)限 ................................? 635
20.7.2 顯示和隱藏通知 .....................? 635
20.7.3 通知生命周期回調(diào) .................? 636
20.8 Page Visibility API ..............................? 636
20.9 Streams API .........................................? 637
20.9.1 理解流 ....................................? 637
20.9.2 可讀流 ....................................? 638
20.9.3 可寫流 ....................................? 640
20.9.4 轉(zhuǎn)換流 ....................................? 641
20.9.5 通過管道連接流 .....................? 642
20.10 計時 API ............................................? 644
20.10.1 High Resolution Time
API .....................................? 644
20.10.2 Performance Timeline
API .....................................? 645
20.11 Web 組件 ...........................................? 648
20.11.1 HTML 模板 ........................? 648
20.11.2 影子 DOM ..........................? 651
20.11.3 自定義元素 ........................? 657
20.12 Web Cryptography API ......................? 663
20.12.1 生成隨機數(shù) ........................? 663
20.12.2 使用 SubtleCrypto
對象 ....................................? 664
20.13 小結(jié) ...................................................? 674
第 21 章 錯誤處理與調(diào)試 ...........................? 675
21.1 瀏覽器錯誤報告 ..................................? 675
圖靈社區(qū)會員 守候1268() 專享 尊重版權(quán)
xx 目 錄
21.1.1 桌面控制臺 ............................? 675
21.1.2 移動控制臺 ............................? 676
21.2 錯誤處理 ..............................................? 676
21.2.1? try / catch 語句 .....................? 676
21.2.2 拋出錯誤 ................................? 679
21.2.3? error 事件 ............................? 681
21.2.4 錯誤處理策略 ........................? 682
21.2.5 識別錯誤 ................................? 682
21.2.6 區(qū)分重大與非重大錯誤 .........? 686
21.2.7 把錯誤記錄到服務(wù)器中 .........? 687
21.3 調(diào)試技術(shù) ..............................................? 688
21.3.1 把消息記錄到控制臺 .............? 688
21.3.2 理解控制臺運行時 .................? 689
21.3.3 使用 JavaScript 調(diào)試器 ..........? 689
21.3.4 在頁面中打印消息 .................? 690
21.3.5 補充控制臺方法 .....................? 690
21.3.6 拋出錯誤 ................................? 690
21.4 舊版 IE 的常見錯誤 .............................? 691
21.4.1 無效字符 ................................? 691
21.4.2 未找到成員 ............................? 692
21.4.3 未知運行時錯誤 .....................? 692
21.4.4 語法錯誤 ................................? 692
21.4.5 系統(tǒng)找不到指定資源 .............? 693
21.5 小結(jié) .....................................................? 693
第 22 章 處理 XML ......................................? 694
22.1 瀏覽器對 XML DOM 的支持 ..............? 694
22.1.1 DOM Level 2 Core .................? 694
22.1.2? DOMParser 類型 ....................? 695
22.1.3? XMLSerializer 類型 ...........? 696
22.2 瀏覽器對 XPath 的支持 .......................? 696
22.2.1 DOM Level 3 XPath ...............? 696
22.2.2 單個節(jié)點結(jié)果 ........................? 698
22.2.3 簡單類型結(jié)果 ........................? 698
22.2.4 默認類型結(jié)果 ........................? 699
22.2.5 命名空間支持 ........................? 699
22.3 瀏覽器對 XSLT 的支持 .......................? 700
22.3.1? XSLTProcessor 類型 ...........? 700
22.3.2 使用參數(shù) ................................? 701
22.3.3 重置處理器 ............................? 702
22.4 小結(jié) .....................................................? 702
第 23 章 JSON .............................................? 703
23.1 語法 .....................................................? 703
23.1.1 簡單值 ....................................? 703
23.1.2 對象 .......................................? 704
23.1.3 數(shù)組 .......................................? 704
23.2 解析與序列化 ......................................? 706
23.2.1 JSON 對象 .............................? 706
23.2.2 序列化選項 ............................? 707
23.2.3 解析選項 ................................? 710
23.3 小結(jié) .....................................................? 710
第 24 章 網(wǎng)絡(luò)請求與遠程資源 ..................? 711
24.1? XMLHttpRequest 對象 ......................? 711
24.1.1 使用 XHR ..............................? 712
24.1.2 HTTP 頭部 .............................? 713
24.1.3 GET 請求 ...............................? 715
24.1.4 POST 請求 .............................? 715
24.1.5 XMLHttpRequest Level 2 ......? 716
24.2 進度事件 .............................................? 718
24.2.1? load 事件 ..............................? 718
24.2.2? progress 事件 .....................? 719
24.3 跨源資源共享 ......................................? 719
24.3.1 預(yù)檢請求 ................................? 720
24.3.2 憑據(jù)請求 ................................? 721
24.4 替代性跨源技術(shù) ..................................? 721
24.4.1 圖片探測 ................................? 721
24.4.2 JSONP ....................................? 722
24.5 Fetch API .............................................? 722
24.5.1 基本用法 ................................? 723
24.5.2 常見 Fetch 請求模式 ..............? 728
24.5.3? Headers 對象 ........................? 730
24.5.4? Request 對象 ........................? 732
24.5.5? Response 對象 .....................? 735
24.5.6? Request 、 Response 及
Body 混入 ..............................? 739
圖靈社區(qū)會員 守候1268() 專享 尊重版權(quán)
目 錄 xxi
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
17
24.6 Beacon API ..........................................? 747
24.7 Web Socket ..........................................? 747
24.7.1 API .........................................? 748
24.7.2 發(fā)送和接收數(shù)據(jù) .....................? 748
24.7.3 其他事件 ................................? 748
24.8 安全 .....................................................? 749
24.9 小結(jié) .....................................................? 750
第 25 章 客戶端存儲 ...................................? 751
25.1 cookie ...................................................? 751
25.1.1 限制 ........................................? 751
25.1.2 cookie 的構(gòu)成 .........................? 752
25.1.3 JavaScript 中的 cookie ...........? 753
25.1.4 子 cookie ................................? 755
25.1.5 使用 cookie 的注意事項 .........? 759
25.2 Web Storage .........................................? 759
25.2.1? Storage 類型 ........................? 759
25.2.2? sessionStorage 對象 .........? 760
25.2.3? localStorage 對象 ..............? 761
25.2.4 存儲事件 ................................? 762
25.2.5 限制 ........................................? 762
25.3 IndexedDB ...........................................? 762
25.3.1 數(shù)據(jù)庫 ....................................? 763
25.3.2 對象存儲 ................................? 763
25.3.3 事務(wù) ........................................? 764
25.3.4 插入對象 ................................? 765
25.3.5 通過游標(biāo)查詢 .........................? 765
25.3.6 鍵范圍 ....................................? 767
25.3.7 設(shè)置游標(biāo)方向 .........................? 768
25.3.8 索引 ........................................? 769
25.3.9 并發(fā)問題 ................................? 770
25.3.10 限制 ......................................? 771
25.4 小結(jié) .....................................................? 771
第 26 章 模塊 ................................................? 772
26.1 理解模塊模式 ......................................? 772
26.1.1 模塊標(biāo)識符 ............................? 772
26.1.2 模塊依賴 ................................? 773
26.1.3 模塊加載 ................................? 773
26.1.4 入口 ........................................? 773
26.1.5 異步依賴 ................................? 774
26.1.6 動態(tài)依賴 ................................? 774
26.1.7 靜態(tài)分析 ................................? 774
26.1.8 循環(huán)依賴 ................................? 775
26.2 湊合的模塊系統(tǒng) ..................................? 776
26.3 使用 ES6 之前的模塊加載器 ...............? 779
26.3.1 CommonJS .............................? 779
26.3.2 異步模塊定義 ........................? 781
26.3.3 通用模塊定義 ........................? 782
26.3.4 模塊加載器終將沒落 .............? 782
26.4 使用 ES6 模塊 .....................................? 783
26.4.1 模塊標(biāo)簽及定義 .....................? 783
26.4.2 模塊加載 ................................? 784
26.4.3 模塊行為 ................................? 784
26.4.4 模塊導(dǎo)出 ................................? 785
26.4.5 模塊導(dǎo)入 ................................? 787
26.4.6 模塊轉(zhuǎn)移導(dǎo)出 ........................? 789
26.4.7 工作者模塊 ............................? 789
26.4.8 向后兼容 ................................? 790
26.5 小結(jié) .....................................................? 790
第 27 章 工作者線程 ...................................? 791
27.1 工作者線程簡介 ..................................? 791
27.1.1 工作者線程與線程 .................? 791
27.1.2 工作者線程的類型 .................? 792
27.1.3? WorkerGlobalScope ...........? 793
27.2 專用工作者線程 ..................................? 793
27.2.1 專用工作者線程的基本
概念 ........................................? 794
27.2.2 專用工作者線程與隱式
MessagePorts ......................? 796
27.2.3 專用工作者線程的生命
周期 ........................................? 796
27.2.4 配置 Worker 選項 .................? 798
27.2.5 在 JavaScript 行內(nèi)創(chuàng)建
工作者線程 ............................? 798
27.2.6 在工作者線程中動態(tài)執(zhí)行
腳本 ........................................? 799
xxii 目 錄
27.2.7 委托任務(wù)到子工作者線程 .....? 800
27.2.8 處理工作者線程錯誤 .............? 801
27.2.9 與專用工作者線程通信 .........? 801
27.2.10 工作者線程數(shù)據(jù)傳輸 ...........? 805
27.2.11 線程池 ..................................? 810
27.3 共享工作者線程 ..................................? 813
27.3.1 共享工作者線程簡介 .............? 813
27.3.2 理解共享工作者線程的
生命周期 ................................? 815
27.3.3 連接到共享工作者線程 .........? 816
27.4 服務(wù)工作者線程 ..................................? 817
27.4.1 服務(wù)工作者線程基礎(chǔ) .............? 818
27.4.2 服務(wù)工作者線程緩存 .............? 824
27.4.3 服務(wù)工作者線程客戶端 .........? 829
27.4.4 服務(wù)工作者線程與一致性 .....? 829
27.4.5 理解服務(wù)工作者線程的
生命周期 ................................? 830
27.4.6 控制反轉(zhuǎn)與服務(wù)工作者
線程持久化 ............................? 834
27.4.7 通過 updateViaCache
管理服務(wù)文件緩存 .................? 835
27.4.8 強制性服務(wù)工作者線程
操作 ........................................? 835
27.4.9 服務(wù)工作者線程消息 .............? 836
27.4.10 攔截 fetch 事件 .................? 837
27.4.11 推送通知 ..............................? 839
27.5 小結(jié) .....................................................? 841
第 28 章 最佳實踐 .......................................? 842
28.1 可維護性 .............................................? 842
28.1.1 什么是可維護的代碼 .............? 842
28.1.2 編碼規(guī)范 ................................? 843
28.1.3 松散耦合 ................................? 845
28.1.4 編碼慣例 ................................? 848
28.2 性能 .....................................................? 851
28.2.1 作用域意識 ............................? 851
28.2.2 選擇正確的方法 ....................? 852
28.2.3 語句最少化 ............................? 857
28.2.4 優(yōu)化 DOM 交互 .....................? 858
28.3 部署 .....................................................? 861
28.3.1 構(gòu)建流程 ................................? 861
28.3.2 驗證 .......................................? 862
28.3.3 壓縮 .......................................? 863
28.4 小結(jié) .....................................................? 864
附錄 A ES2018 和 ES2019 (圖靈社區(qū)下載)
附錄 B 嚴格模式 (圖靈社區(qū)下載)
附錄 C JavaScript 庫和框架 (圖靈社區(qū)下載)
附錄 D JavaScript 工具 (圖靈社區(qū)下載)
下載加微信:CH43691