书籍信息

JavaScript高级程序设计第4版.pdf-QUI-Notes

书名:JavaScript高级程序设计第4版.pdf
作者:马特·弗里斯比
翻译:李松峰
大小:13.6M
格式:PDF
版权:归原作者所有,仅供学习使用,请24小时内删除!https://www.ituring.com.cn/book/2472

目录:

第 1 章 什么是 JavaScript ............................ 1
1.1 简短的历史回顾 ....................................... 1
1.2 JavaScript 实现 ......................................... 2
1.2.1 ECMAScript .................................. 2
1.2.2 DOM ............................................. 6
1.2.3 BOM .............................................. 8
1.3 JavaScript 版本 ......................................... 9
1.4 小结 ......................................................... 10
第 2 章 HTML 中的 JavaScript ................... 11
2.1 <script>元素 ......................................... 11
2.1.1 标签位置 ...................................... 13
2.1.2 推迟执行脚本 .............................. 14
2.1.3 异步执行脚本 .............................. 14
2.1.4 动态加载脚本 .............................. 15
2.1.5 XHTML 中的变化 ........................ 16
2.1.6 废弃的语法 .................................. 17
2.2 行内代码与外部文件 ............................... 18
2.3 文档模式 .................................................. 18
2.4 <noscript>元素 .................................... 19
2.5 小结 ......................................................... 20
第 3 章 语言基础 ............................................ 21
3.1 语法 ......................................................... 21
3.1.1 区分大小写 .................................. 21
3.1.2 标识符 .......................................... 21
3.1.3 注释 .............................................. 22
3.1.4 严格模式 ...................................... 22
3.1.5 语句 .............................................. 22
3.2 关键字与保留字 ...................................... 23
3.3 变量 ......................................................... 24
3.3.1 var 关键字 .................................. 24
3.3.2 let 声明 ...................................... 25
3.3.3 const 声明 .................................. 28
3.3.4 声明风格及最佳实践 ................... 29
3.4 数据类型 .................................................. 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 指数操作符 .................................. 67
3.5.6 加性操作符 .................................. 68
3.5.7 关系操作符 .................................. 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
3.6.4 for 语句 ...................................... 74
3.6.5 for-in 语句 ................................ 75
3.6.6 for-of 语句 ................................ 76
3.6.7 标签语句 ...................................... 76
3.6.8 break 和 continue 语句 ........... 76
3.6.9 with 语句 .................................... 78
3.6.10 switch 语句 .............................. 78
3.7 函数 ......................................................... 80
3.8 小结 ......................................................... 82
第 4 章 变量、作用域与内存....................... 83
4.1 原始值与引用值 ...................................... 83
4.1.1 动态属性 ...................................... 83
4.1.2 复制值 .......................................... 84
4.1.3 传递参数 ...................................... 85
4.1.4 确定类型 ...................................... 86
4.2 执行上下文与作用域 .............................. 87
4.2.1 作用域链增强 .............................. 89
4.2.2 变量声明 ...................................... 90
4.3 垃圾回收 ................................................. 94
4.3.1 标记清理 ...................................... 95
4.3.2 引用计数 ...................................... 95
4.3.3 性能 ............................................. 96
4.3.4 内存管理 ...................................... 97
4.4 小结 ....................................................... 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 构造函数属性 .............. 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 单例内置对象 ........................................ 128
5.4.1 Global ...................................... 128
5.4.2 Math .......................................... 132
5.5 小结 ....................................................... 135
第 6 章 集合引用类型 ................................. 136
6.1 Object .................................................. 136
6.2 Array .................................................... 138
6.2.1 创建数组 .................................... 138
6.2.2 数组空位 .................................... 140
6.2.3 数组索引 .................................... 141
6.2.4 检测数组 .................................... 142
6.2.5 迭代器方法 ................................ 143
6.2.6 复制和填充方法 ........................ 143
6.2.7 转换方法 .................................... 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 定型数组 ............................................... 155
6.3.1 历史 ........................................... 155
6.3.2 ArrayBuffer ............................ 155
6.3.3 DataView .................................. 156
6.3.4 定型数组 .................................... 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
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 小结 ....................................................... 182
第 7 章 迭代器与生成器 ............................. 183
7.1 理解迭代 ................................................ 183
7.2 迭代器模式 ............................................ 184
7.2.1 可迭代协议 ................................ 184
7.2.2 迭代器协议 ................................ 186
7.2.3 自定义迭代器 ............................ 188
7.2.4 提前终止迭代器 ......................... 190
7.3 生成器 .................................................... 192
7.3.1 生成器基础 ................................ 192
7.3.2 通过 yield 中断执行 ................ 194
7.3.3 生成器作为默认迭代器 ............. 201
7.3.4 提前终止生成器 ......................... 202
7.4 小结 ....................................................... 204
第 8 章 对象、类与面向对象编程 ............ 205
8.1 理解对象 ................................................ 205
8.1.1 属性的类型 ................................ 206
8.1.2 定义多个属性 ............................ 208
8.1.3 读取属性的特性 ......................... 209
8.1.4 合并对象 .................................... 210
8.1.5 对象标识及相等判定 ................. 213
8.1.6 增强的对象语法 ......................... 213
8.1.7 对象解构 .................................... 216
8.2 创建对象 ................................................ 220
8.2.1 概述 ............................................ 220
8.2.2 工厂模式 .................................... 220
8.2.3 构造函数模式 ............................ 221
8.2.4 原型模式 .................................... 224
8.2.5 对象迭代 .................................... 233
8.3 继承 ....................................................... 238
8.3.1 原型链 ........................................ 238
8.3.2 盗用构造函数 ............................ 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 类构造函数 ................................ 250
8.4.3 实例、原型和类成员 ................. 254
8.4.4 继承............................................ 258
8.5 小结 ....................................................... 265
第 9 章 代理与反射 ..................................... 266
9.1 代理基础 ................................................ 266
9.1.1 创建空代理 ................................ 266
9.1.2 定义捕获器 ................................ 267
9.1.3 捕获器参数和反射 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 getOwnPropertyDescriptor() .......................... 277
9.2.6 deleteProperty() ................. 278
9.2.7 ownKeys() ................................ 279
9.2.8 getPrototypeOf() ................. 279
9.2.9 setPrototypeOf() ................. 280
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 函数与构造函数参数验证 ......... 284
9.3.5 数据绑定与可观察对象 ............. 285
9.4 小结 ....................................................... 286
第 10 章 函数 ................................................ 287
10.1 箭头函数 .............................................. 288
10.2 函数名 ................................................. 289
10.3 理解参数 .............................................. 290
10.4 没有重载 .............................................. 292
10.5 默认参数值 .......................................... 293
10.6 参数扩展与收集 .................................. 295
10.6.1 扩展参数 ................................ 295
10.6.2 收集参数 ................................ 296
10.7 函数声明与函数表达式 ....................... 297
10.8 函数作为值 .......................................... 297
10.9 函数内部 .............................................. 299
10.9.1 arguments ............................ 299
10.9.2 this ....................................... 300
10.9.3 caller ................................... 301
10.9.4 new.target .......................... 301
10.10 函数属性与方法 ................................ 302
10.11 函数表达式 ........................................ 304
10.12 递归 ................................................... 306
10.13 尾调用优化 ........................................ 307
10.13.1 尾调用优化的条件 ............. 307
10.13.2 尾调用优化的代码 ............. 309
10.14 闭包 ................................................... 309
10.14.1 this 对象 .......................... 312
10.14.2 内存泄漏 ............................ 314
10.15 立即调用的函数表达式 ..................... 314
10.16 私有变量 ........................................... 316
10.16.1 静态私有变量 .................... 317
10.16.2 模块模式 ............................ 318
10.16.3 模块增强模式 .................... 320
10.17 小结 ................................................... 321
第 11 章 期约与异步函数 ........................... 322
11.1 异步编程 ............................................. 322
11.1.1 同步与异步 ............................ 322
11.1.2 以往的异步编程模式 ............. 323
11.2 期约 ..................................................... 325
11.2.1 Promises/A+规范 ................... 325
11.2.2 期约基础 ................................ 325
11.2.3 期约的实例方法 .................... 329
11.2.4 期约连锁与期约合成 ............. 338
11.2.5 期约扩展 ................................ 345
11.3 异步函数 ............................................. 347
11.3.1 异步函数 ................................ 348
11.3.2 停止和恢复执行 .................... 353
11.3.3 异步函数策略 ........................ 356
11.4 小结 ..................................................... 360
第 12 章 BOM .............................................. 361
12.1 window 对象 ....................................... 361
12.1.1 Global 作用域 ...................... 361
12.1.2 窗口关系 ................................ 362
12.1.3 窗口位置与像素比 ................ 362
12.1.4 窗口大小 ................................ 363
12.1.5 视口位置 ................................ 364
12.1.6 导航与打开新窗口 ................ 365
12.1.7 定时器 .................................... 368
12.1.8 系统对话框 ............................ 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 
12.4 screen 对象 ........................................ 379
12.5 history 对象 ...................................... 379
12.5.1 导航 ........................................ 379
12.5.2 历史状态管理 ......................... 380
12.6 小结 ..................................................... 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 识别浏览器与操作系统 ......... 394
13.3.2 浏览器元数据 ......................... 395
13.3.3 硬件 ........................................ 400
13.4 小结 ..................................................... 400
第 14 章 DOM ............................................... 401
14.1 节点层级 .............................................. 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 动态脚本 ................................ 426
14.2.2 动态样式 ................................ 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 异步回调与记录队列 ............. 442
14.3.4 性能、内存与垃圾回收 ......... 443
14.4 小结 ..................................................... 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 自定义数据属性 ..................... 451
15.3.6 插入标记 ................................ 452
15.3.7 scrollIntoView() .............. 456
15.4 专有扩展 .............................................. 456
15.4.1 children 属性 ...................... 456
15.4.2 contains()方法 ................... 457
15.4.3 插入标记 ................................ 457
15.4.4 滚动 ........................................ 459
15.5 小结 ..................................................... 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 
16.4 范围 ..................................................... 481
16.4.1 DOM 范围 .............................. 482
16.4.2 简单选择 ................................ 482
16.4.3 复杂选择 ................................ 483
16.4.4 操作范围 ................................ 484
16.4.5 范围插入 ................................ 486
16.4.6 范围折叠 ................................ 487
16.4.7 范围比较 ................................ 488
16.4.8 复制范围 ................................ 489
16.4.9 清理 ........................................ 489
16.5 小结 ..................................................... 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 鼠标和滚轮事件 ..................... 510
17.4.4 键盘与输入事件 ..................... 518
17.4.5 合成事件 ................................ 522
17.4.6 变化事件 ................................ 523
17.4.7 HTML5 事件 .......................... 523
17.4.8 设备事件 ................................ 528
17.4.9 触摸及手势事件 ..................... 531
17.4.10 事件参考 .............................. 534
17.5 内存与性能.......................................... 540
17.5.1 事件委托 ................................ 540
17.5.2 删除事件处理程序 ................ 541
17.6 模拟事件 ............................................. 543
17.6.1 DOM 事件模拟 ...................... 543
17.6.2 IE 事件模拟 ........................... 547
17.7 小结 ..................................................... 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 通过 requestAnimationFrame 节流 ............................ 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 图像数据 .............................. 566
18.3.11 合成 ..................................... 567
18.4 WebGL ................................................ 569
18.4.1 WebGL 上下文 ...................... 569
18.4.2 WebGL 基础 .......................... 569
18.4.3 WebGL1 与 WebGL2 ............. 579
18.5 小结 ..................................................... 579
第 19 章 表单脚本 ....................................... 581
19.1 表单基础 ............................................. 581
19.1.1 提交表单 ................................ 582
19.1.2 重置表单 ................................ 583 
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 小结 ..................................................... 608
第 20 章 JavaScript API ............................ 609
20.1 Atomics 与 SharedArrayBuffer....... 609
20.1.1 SharedArrayBuffer ............ 610
20.1.2 原子操作基础 ......................... 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 自定义放置目标 ..................... 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 通知权限 ................................ 635
20.7.2 显示和隐藏通知 ..................... 635
20.7.3 通知生命周期回调 ................. 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 转换流 .................................... 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 生成随机数 ........................ 663
20.12.2 使用 SubtleCrypto
对象 .................................... 664
20.13 小结 ................................................... 674
第 21 章 错误处理与调试 ........................... 675
21.1 浏览器错误报告 .................................. 675
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 区分重大与非重大错误 ......... 686
21.2.7 把错误记录到服务器中 ......... 687
21.3 调试技术 .............................................. 688
21.3.1 把消息记录到控制台 ............. 688
21.3.2 理解控制台运行时 ................. 689
21.3.3 使用 JavaScript 调试器 .......... 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 系统找不到指定资源 ............. 693
21.5 小结 ..................................................... 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 单个节点结果 ........................ 698
22.2.3 简单类型结果 ........................ 698
22.2.4 默认类型结果 ........................ 699
22.2.5 命名空间支持 ........................ 699
22.3 浏览器对 XSLT 的支持 ....................... 700
22.3.1 XSLTProcessor 类型 ........... 700
22.3.2 使用参数 ................................ 701
22.3.3 重置处理器 ............................ 702
22.4 小结 ..................................................... 702
第 23 章 JSON ............................................. 703
23.1 语法 ..................................................... 703
23.1.1 简单值 .................................... 703
23.1.2 对象 ....................................... 704
23.1.3 数组 ....................................... 704
23.2 解析与序列化 ...................................... 706
23.2.1 JSON 对象 ............................. 706
23.2.2 序列化选项 ............................ 707
23.2.3 解析选项 ................................ 710
23.3 小结 ..................................................... 710
第 24 章 网络请求与远程资源 .................. 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 预检请求 ................................ 720
24.3.2 凭据请求 ................................ 721
24.4 替代性跨源技术 .................................. 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 
24.6 Beacon API .......................................... 747
24.7 Web Socket .......................................... 747
24.7.1 API ......................................... 748
24.7.2 发送和接收数据 ..................... 748
24.7.3 其他事件 ................................ 748
24.8 安全 ..................................................... 749
24.9 小结 ..................................................... 750
第 25 章 客户端存储 ................................... 751
25.1 cookie ................................................... 751
25.1.1 限制 ........................................ 751
25.1.2 cookie 的构成 ......................... 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 数据库 .................................... 763
25.3.2 对象存储 ................................ 763
25.3.3 事务 ........................................ 764
25.3.4 插入对象 ................................ 765
25.3.5 通过游标查询 ......................... 765
25.3.6 键范围 .................................... 767
25.3.7 设置游标方向 ......................... 768
25.3.8 索引 ........................................ 769
25.3.9 并发问题 ................................ 770
25.3.10 限制 ...................................... 771
25.4 小结 ..................................................... 771
第 26 章 模块 ................................................ 772
26.1 理解模块模式 ...................................... 772
26.1.1 模块标识符 ............................ 772
26.1.2 模块依赖 ................................ 773
26.1.3 模块加载 ................................ 773
26.1.4 入口 ........................................ 773
26.1.5 异步依赖 ................................ 774
26.1.6 动态依赖 ................................ 774
26.1.7 静态分析 ................................ 774
26.1.8 循环依赖 ................................ 775
26.2 凑合的模块系统 .................................. 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 模块标签及定义 ..................... 783
26.4.2 模块加载 ................................ 784
26.4.3 模块行为 ................................ 784
26.4.4 模块导出 ................................ 785
26.4.5 模块导入 ................................ 787
26.4.6 模块转移导出 ........................ 789
26.4.7 工作者模块 ............................ 789
26.4.8 向后兼容 ................................ 790
26.5 小结 ..................................................... 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 行内创建
工作者线程 ............................ 798
27.2.6 在工作者线程中动态执行
脚本 ........................................ 799 
27.2.7 委托任务到子工作者线程 ..... 800
27.2.8 处理工作者线程错误 ............. 801
27.2.9 与专用工作者线程通信 ......... 801
27.2.10 工作者线程数据传输 ........... 805
27.2.11 线程池 .................................. 810
27.3 共享工作者线程 .................................. 813
27.3.1 共享工作者线程简介 ............. 813
27.3.2 理解共享工作者线程的
生命周期 ................................ 815
27.3.3 连接到共享工作者线程 ......... 816
27.4 服务工作者线程 .................................. 817
27.4.1 服务工作者线程基础 ............. 818
27.4.2 服务工作者线程缓存 ............. 824
27.4.3 服务工作者线程客户端 ......... 829
27.4.4 服务工作者线程与一致性 ..... 829
27.4.5 理解服务工作者线程的
生命周期 ................................ 830
27.4.6 控制反转与服务工作者
线程持久化 ............................ 834
27.4.7 通过 updateViaCache
管理服务文件缓存 ................. 835
27.4.8 强制性服务工作者线程
操作 ........................................ 835
27.4.9 服务工作者线程消息 ............. 836
27.4.10 拦截 fetch 事件 ................. 837
27.4.11 推送通知 .............................. 839
27.5 小结 ..................................................... 841
第 28 章 最佳实践 ....................................... 842
28.1 可维护性 ............................................. 842
28.1.1 什么是可维护的代码 ............. 842
28.1.2 编码规范 ................................ 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 优化 DOM 交互 ..................... 858
28.3 部署 ..................................................... 861
28.3.1 构建流程 ................................ 861
28.3.2 验证 ....................................... 862
28.3.3 压缩 ....................................... 863
28.4 小结 ..................................................... 864
附录 A ES2018 和 ES2019(图灵社区下载)
附录 B 严格模式(图灵社区下载)
附录 C JavaScript 库和框架(图灵社区下载)
附录 D JavaScript 工具(图灵社区下载)