书介绍JavaScript语言和由浏览器与Node实现的JavaScript API。本书适合有一定编程经验、想学习JavaScript读者,也适合已经在使用JavaScript但希望更深入地理解进而真正掌握这门语言的程序员。本书的目标是全面地讲解JavaScript语言,对JavaScript程序中可能用到的重要的客户端API和服务器端API提供深入的介绍。本书篇幅较长,内容非常详尽,相信认真研究本书的读者都能获益良多。
封面图
目录
- 前言1
- 第1章 JavaScript简介5
- 1.1 探索JavaScript7
- 1.2 Hello World8
- 1.3 JavaScript之旅9
- 1.4 示例:字符频率柱形图14
- 1.5 小结17
- 第2章 词法结构18
- 2.1 JavaScript程序的文本18
- 2.2 注释19
- 2.3 字面量19
- 2.4 标识符和保留字19
- 2.5 Unicode20
- 2.6 可选的分号21
- 2.7 小结23
- 第3章 类型、值和变量24
- 3.1 概述与定义24
- 3.2 数值26
- 3.3 文本32
- 3.4 布尔值38
- 3.5 null与undefined39
- 3.6 符号40
- 3.7 全局对象41
- 3.8 不可修改的原始值与可修改的对象引用42
- 3.9 类型转换44
- 3.10 变量声明与赋值51
- 3.11 小结58
- 第4章 表达式与操作符59
- 4.1 主表达式59
- 4.2 对象和数组初始化程序60
- 4.3 函数定义表达式61
- 4.4 属性访问表达式62
- 4.5 调用表达式64
- 4.6 对象创建表达式65
- 4.7 操作符概述66
- 4.8 算术表达式70
- 4.9 关系表达式75
- 4.10 逻辑表达式79
- 4.11 赋值表达式82
- 4.12 求值表达式83
- 4.13 其他操作符86
- 4.14 小结91
- 第5章 语句92
- 5.1 表达式语句93
- 5.2 复合语句与空语句93
- 5.3 条件语句94
- 5.4 循环语句99
- 5.5 跳转语句106
- 5.6 其他语句113
- 5.7 声明117
- 5.8 小结119
- 第6章 对象120
- 6.1 对象简介120
- 6.2 创建对象121
- 6.3 查询和设置属性124
- 6.4 删除属性128
- 6.5 测试属性129
- 6.6 枚举属性130
- 6.7 扩展对象131
- 6.8 序列化对象133
- 6.9 对象方法133
- 6.10 对象字面量扩展语法135
- 6.11 小结141
- 第7章 数组143
- 7.1 创建数组144
- 7.2 读写数组元素146
- 7.3 稀疏数组148
- 7.4 数组长度148
- 7.5 添加和删除数组元素149
- 7.6 迭代数组150
- 7.7 多维数组151
- 7.8 数组方法152
- 7.9 类数组对象163
- 7.10 作为数组的字符串165
- 7.11 小结166
- 第8章 函数167
- 8.1 定义函数167
- 8.2 调用函数172
- 8.3 函数实参与形参177
- 8.4 函数作为值184
- 8.5 函数作为命名空间187
- 8.6 闭包188
- 8.7 函数属性、方法与构造函数192
- 8.8 函数式编程196
- 8.9 小结201
- 第9章 类202
- 9.1 类和原型203
- 9.2 类和构造函数204
- 9.3 使用class关键字的类209
- 9.4 为已有类添加方法215
- 9.5 子类216
- 9.6 小结226
- 第10章 模块227
- 10.1 基于类、对象和闭包的模块227
- 10.2 Node中的模块230
- 10.3 ES6中的模块232
- 10.4 小结242
- 第11章 JavaScript标准库243
- 11.1 集合与映射244
- 11.2 定型数组与二进制数据249
- 11.3 正则表达式与模式匹配255
- 11.4 日期与时间273
- 11.5 Error类276
- 11.6 JSON序列化与解析277
- 11.7 国际化API280
- 11.8 控制台API287
- 11.9 URL API290
- 11.10 计时器293
- 11.11 小结294
- 第12章 迭代器与生成器295
- 12.1 迭代器原理296
- 12.2 实现可迭代对象296
- 12.3 生成器300
- 12.4 高级生成器特性303
- 12.5 小结306
- 第13章 异步JavaScript307
- 13.1 使用回调的异步编程307
- 13.2 期约311
- 13.3 async和await330
- 13.4 异步迭代332
- 13.5 小结338
- 第14章 元编程340
- 14.1 属性的特性340
- 14.2 对象的可扩展能力345
- 14.3 prototype特性346
- 14.4 公认符号347
- 14.5 模板标签354
- 14.6 反射API356
- 14.7 代理对象359
- 14.8 小结365
- 第15章 浏览器中的JavaScript367
- 15.1 Web编程基础369
- 15.2 事件382
- 15.3 操作DOM391
- 15.4 操作CSS406
- 15.5 文档几何与滚动412
- 15.6 Web组件416
- 15.7 可伸缩矢量图形427
- 与图形434
- 15.9 Audio API453
- 15.10 位置、导航与历史455
- 15.11 网络463
- 15.12 存储479
- 15.13 工作线程与消息传递490
- 15.14 示例:曼德布洛特集合496
- 15.15 小结及未来阅读建议508
- 第16章 Node服务器端JavaScript515
- 16.1 Node编程基础516
- 16.2 Node默认异步520
- 16.3 缓冲区523
- 16.4 事件与EventEmitter525
- 16.5 流526
- 16.6 进程、CPU和操作系统细节536
- 16.7 操作文件537
- 16.8 HTTP客户端与服务器547
- 16.9 非HTTP网络服务器及客户端551
- 16.10 操作子进程554
- 16.11 工作线程558
- 16.12 小结566
- 第17章 JavaScript工具和扩展568
- 17.1 使用ESLint检查代码569
- 17.2 使用Prettier格式化代码570
- 17.3 使用Jest做单元测试570
- 17.4 使用npm管理依赖包573
- 17.5 代码打包574
- 17.6 使用Babel转译576
- 17.7 JSX:JavaScript中的标记表达式577
- 17.8 使用Flow检查类型581
- 17.9 小结595
- 关于作者596
- 关于封面596