JavaScript高級程序設(shè)計

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酌毡,一起剝皮案震驚了整個濱河市克握,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枷踏,老刑警劉巖菩暗,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異旭蠕,居然都是意外死亡停团,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門掏熬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佑稠,“玉大人,你說我怎么就攤上這事旗芬∩嘟海” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵疮丛,是天一觀的道長辆琅。 經(jīng)常有香客問我,道長这刷,這世上最難降的妖魔是什么婉烟? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮暇屋,結(jié)果婚禮上似袁,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好昙衅,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布扬霜。 她就那樣靜靜地躺著,像睡著了一般而涉。 火紅的嫁衣襯著肌膚如雪著瓶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天啼县,我揣著相機與錄音材原,去河邊找鬼。 笑死季眷,一個胖子當(dāng)著我的面吹牛余蟹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播子刮,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼威酒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挺峡?” 一聲冷哼從身側(cè)響起葵孤,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎橱赠,沒想到半個月后尤仍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡病线,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鲤嫡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片送挑。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖暖眼,靈堂內(nèi)的尸體忽然破棺而出惕耕,到底是詐尸還是另有隱情,我是刑警寧澤诫肠,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布司澎,位于F島的核電站,受9級特大地震影響栋豫,放射性物質(zhì)發(fā)生泄漏挤安。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一丧鸯、第九天 我趴在偏房一處隱蔽的房頂上張望蛤铜。 院中可真熱鬧,春花似錦、人聲如沸围肥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穆刻。三九已至置尔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間氢伟,已是汗流浹背榜轿。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腐芍,地道東北人差导。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像猪勇,于是被迫代替她去往敵國和親设褐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容