描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787115456328
本书将带领程序员开启一次充实的ES6之旅,同时也会介绍一些相关的工具和技术。本书不仅会介绍基础知识(比如变量、控制流和数组),还会讲解函数式编程和异步编程等复杂的概念。你将会学习如何在客户端(或者在服务端使用Node.js)构建强大的响应式Web应用。
通过阅读本书,你将学会:
■ 使用ES6编程,然后通过转译来兼容ES5;
■ 将数据转换为JavaScript可以使用的格式;
■ 理解JavaScript中函数的基本用法和机制;
■ 探索对象和面向对象编程;
■ 了解新的概念,比如迭代器、生成器和代理;
■ 理解异步编程的复杂性;
■ 利用文档对象模型(DOM)来构建基于浏览器的应用;
■ 学习Node.js的基础知识来构建服务器端应用程序。
这是开发者学习JS的一个大时代。但是我说的并不是那种‘我的代码能跑起来’一样的小打小闹。这本书将带你更深入地学习我们所需的那些知识。”
——Kyle Simpson 《你不知道的JavaScript》系列书作者
“这本书写得很好,内容紧凑,介绍了JavaScript的一切,甚至包含了ECMAScript 6。”
——Axel Rauschmayer 《深入理解JavaScript》作者
本书分为22章,在ES6的基础上,系统地介绍了JavaScript的基本语法、语言特性、相关工具、基本对象、技术以及推动现代JavaScript开发的范例等方面的知识。本书内容由浅及深,既有变量、控制流、函数等基础内容,又有异步编程、正则表达式等高级知识。
本书适合具备一定JavaScript基础知识的读者阅读,也适合从事程序设计工作并想要深入探索JavaScript语言的读者阅读。
第1章 个应用 1
1.1 从哪里开始 2
1.2 实用的工具 2
1.2.1 语法高亮 3
1.2.2 括号匹配 3
1.2.3 代码折叠 4
1.2.4 自动补全 4
1.3 关注注释 4
1.4 从这里开始 5
1.5 JavaScript控制台 7
1.6 jQuery 8
1.7 绘制图元 8
1.8 自动执行重复任务 10
1.9 处理用户输入 11
1.10 Hello, World 13
第2章 JavaScript开发中的常用工具 14
2.1 在当下编写ES6代码 14
2.2 ES6的新特性 15
2.2.1 安装Git 16
2.2.2 终端 16
2.2.3 项目根目录 17
2.2.4 版本控制:Git 17
2.2.5 包管理工具:npm 20
2.2.6 构建工具:Gulp和Grunt 22
2.2.7 项目结构 23
2.3 转换器 24
2.3.1 使用Gulp运行Babel 24
2.3.2 格式审查工具 26
2.4 总结 29
第3章 字面量、变量、常量和数据类型 32
3.1 变量和常量 32
3.2 变量和常量:用哪个 33
3.3 标识符命名 34
3.4 字面量 35
3.5 基本类型和对象 36
3.6 数字 37
3.7 字符串 39
3.8 特殊字符 40
3.8.1 模板字符串 41
3.8.2 多行字符串 42
3.8.3 数字用作字符串 43
3.9 布尔型 43
3.10 符号 43
3.11 null和undefined 44
3.12 对象 44
3.13 Number, String和Boolean对象 47
3.14 数组 47
3.15 对象和数组的拖尾逗号 49
3.16 日期 50
3.17 正则表达式 50
3.18 映射和集合 51
3.19 数据类型转换 51
3.19.1 转换成数字 51
3.19.2 转换成字符串 52
3.19.3 转换成布尔型 52
3.20 总结 53
第4章 控制流 54
4.1 控制流的底层 54
4.1.1 while循环 57
4.1.2 块语句 58
4.1.3 空格 59
4.1.4 辅助方法 60
4.1.5 if else语句 60
4.1.6 do…while循环 62
4.1.7 for循环 63
4.1.8 if语句 64
4.1.9 后的整合 65
4.2 JavaScript中的控制语句 66
4.2.1 控制流异常 67
4.2.2 链式if… else语句 67
4.2.3 元语法 68
4.2.4 其他循环模式 69
4.2.5 switch语句 70
4.2.6 for…in循环 74
4.2.7 for…of循环 74
4.3 实用的控制流模式 74
4.3.1 使用continue减少条件嵌套 75
4.3.2 使用break或return避免不必要的计算 75
4.3.3 在循环结束后使用索引的值 76
4.3.4 列表变动时索引递减 76
4.4 总结 77
第5章 表达式和运算符 78
5.1 运算符 79
5.2 算术运算符 80
5.3 运算符优先级 82
5.4 比较运算符 83
5.5 比较数字 85
5.6 字符串连接 86
5.7 逻辑运算符 87
5.8 与、或和非 88
5.8.1 短路求值 89
5.8.2 非布尔值的逻辑运算符 89
5.8.3 条件运算符 90
5.8.4 逗号运算符 91
5.9 分组运算符 91
5.9.1 位运算符 91
5.9.2 类型判断运算符 93
5.9.3 void运算符 94
5.9.4 赋值运算符 94
5.10 解构赋值 95
5.11 对象和数组运算符 97
5.12 模板字符串中的表达式 97
5.13 表达式和控制流模式 97
5.13.1 将if…else语句转化成条件表达式 98
5.13.2 将if语句转化成短路求值的逻辑或(||)表达式 98
5.14 总结 98
第6章 函数 99
6.1 返回值 100
6.2 引用调用 100
6.3 函数参数 101
6.3.1 参数会让函数有所区别吗 103
6.3.2 解构参数 104
6.3.3 默认参数 105
6.4 函数作为对象属性 105
6.5 this关键字 105
6.6 函数表达式和匿名函数 107
6.7 箭头符号 109
6.8 调用、请求和绑定 110
6.9 总结 112
第7章 作用域 113
7.1 作用域和存在 114
7.2 静态作用域与动态作用域 114
7.3 全局作用域 115
7.4 块作用域 117
7.5 变量屏蔽 117
7.6 函数、闭包和静态作用域 119
7.7 即时调用函数表达式 120
7.8 函数作用域和提升 121
7.9 函数提升 123
7.10 临时死区 124
7.11 严格模式 124
7.12 总结 125
第8章 数组及其处理 126
8.1 数组概览 126
8.2 操作数组内容 127
8.2.1 在起始和末尾添加或删除元素 128
8.2.2 在末尾添加多个元素 128
8.2.3 获取子数组 128
8.2.4 从任意位置添加或删除元素 129
8.2.5 数组内的分割和替换 129
8.2.6 用指定值填充数组 129
8.2.7 数组反转和排序 130
8.3 数组搜索 130
8.4 数组的基本操作:map和filter 133
8.5 数组魔法:reduce 135
8.6 数组方法,已删除或者未定义的元素 138
8.7 字符串连接 138
8.8 总结 139
第9章 对象以及面向对象编程 141
9.1 属性枚举 141
9.1.1 for…in 142
9.1.2 Object.keys 142
9.2 面向对象编程 143
9.2.1 创建类和实例 143
9.2.2 动态属性 145
9.2.3 类即函数 146
9.2.4 原型 147
9.2.5 静态方法 148
9.2.6 继承 149
9.2.7 多态 151
9.2.8 枚举对象属性,回顾 151
9.2.9 字符串表示 152
9.3 多继承、混合类和接口 153
9.4 总结 155
第10章 Maps和Sets 156
10.1 Maps 156
10.2 Weak Maps 158
10.3 Sets 159
10.4 Weak Sets 160
10.5 打破对象习惯 161
第11章 异常和错误处理 162
11.1 Error对象 162
11.2 使用try和catch处理异常 163
11.3 抛出异常 164
11.4 异常处理和调用栈 165
11.5 try…catch… finally 166
11.6 让异常成为例外 167
第12章 迭代器和生成器 168
12.1 迭代协议 170
12.2 生成器 172
12.2.1 yield表达式和双向交流 173
12.2.2 生成器和返回值 175
12.3 总结 175
第13章 函数和抽象思考的力量 176
13.1 函数作为子程序 176
13.2 函数作为有返回值的子程序 177
13.3 函数即…函数 178
13.4 那又如何? 180
13.5 IIEFs和异步代码 182
13.6 函数变量 184
13.6.1 数组中的函数 186
13.6.2 将函数传给函数 187
13.6.3 在函数中返回函数 188
13.7 递归 189
13.8 总结 190
第14章 异步编程 191
14.1 类比 192
14.2 回调 192
14.2.1 setInterval和clearInterval 193
14.2.2 Scope和异步执行 194
14.2.3 错误优先回调 195
14.2.4 回调地狱 196
14.3 Promise 197
14.3.1 创建Promise 198
14.3.2 使用Promise 198
14.3.3 事件 200
14.3.4 Promise链 202
14.3.5 避免不被处理的Promise 203
14.4 生成器 205
14.4.1 向前一步和退后两步 207
14.4.2 不要自己编写生成器运行器 208
14.4.3 生成器运行器中的异常处理 208
14.5 总结 209
第15章 日期和时间 211
15.1 日期、时区、时间戳以及Unix时间 211
15.2 构造Date对象 212
15.3 Moment.js 213
15.4 JavaScript中Date的实际用法 214
15.5 构造日期对象 214
15.5.1 在服务端构造日期对象 214
15.5.2 在浏览器中构造Date对象 215
15.6 传递日期 215
15.7 展日期 216
15.8 日期的组成 217
15.9 日期的比较 218
15.10 日期的四则运算 218
15.11 用户友好的相对日期 219
15.12 总结 220
第16章 数学运算 221
16.1 格式化数字 221
16.1.1 固定小数 222
16.1.2 指数符号 222
16.1.3 固定精度 222
16.1.4 不同进制 223
16.1.5 进一步格式化数字 223
16.2 常量 224
16.3 代数函数 224
16.3.1 幂运算 224
16.3.2 对数函数 225
16.3.3 其他函数 225
16.3.4 伪随机数生成器 226
16.4 三角函数 227
16.5 双曲线函数 227
第17章 正则表达式 229
17.1 子字符串匹配和替换 229
17.2 构造正则表达式 230
17.3 使用正则表达式进行搜索 231
17.4 使用正则表达式进行替换 231
17.5 消费输入 232
17.6 分枝 234
17.7 匹配HTML 235
17.8 字符集 235
17.9 具名字符集 236
17.10 重复 237
17.11 句点元字符和转义 238
17.12 分组 238
17.13 懒惰匹配,贪婪匹配 240
17.14 反向引用 241
17.15 替换组 242
17.16 函数替换 243
17.17 锚点 245
17.18 单词边界匹配 245
17.19 向前查找 247
17.20 动态构造正则表达式 248
17.21 总结 248
第18章 浏览器中的JavaScript 249
18.1 ES5还是ES6 249
18.2 文档对象模型 250
18.3 关于树的专用语 252
18.4 DOM中的“Get”方法 253
18.5 查询DOM元素 253
18.6 多个DOM元素 254
18.7 创建DOM元素 255
18.8 样式元素 256
18.9 数据属性 257
18.10 事件 258
18.11 事件捕获与事件冒泡 259
18.12 Ajax 263
18.13 总结 267
第19章 jQuery 268
19.1 的美元(符号) 268
19.2 引入jQuery 269
19.3 等待DOM加载 269
19.4 jQuery封装的DOM元素 270
19.5 操作元素 270
19.6 展开jQuery对象 272
19.7 Ajax 273
19.8 总结 273
第20章 Node 274
20.1 Node基础 274
20.2 模块(Module) 275
20.3 核心module、文件module和npm module 277
20.4 自定义函数Module 279
20.5 访问文件系统 281
20.6 进程 284
20.7 操作系统 286
20.8 子进程 287
20.9 流 288
20.10 Web服务器 289
20.11 总结 291
第21章 对象属性配置和代理 292
21.1 存取器属性:getter和setter 292
21.2 对象属性的属性 294
21.3 对象保护:冻结、封装、以及阻止扩展 296
21.4 代理 299
21.5 总结 301
第22章 附加资源 302
22.1 在线文档 302
22.2 期刊 303
22.3 博客和教程 303
22.4 Stack Overflow 304
22.5 给开源项目做贡献 306
22.6 总结 307
评论
还没有评论。