深入理解ES6

0
(0)

深入理解ES6

作者:【美】NicholasC.Zakas

出版社:电子工业出版社

出品方:博文视点

原作名:UnderstandingES6

译者:刘振涛

出版年:2017-7-1

页数:372

定价:CNY99.00

装帧:平装

ISBN:9787121317989

目录
······

第1章 块级作用域绑定 1

var声明及变量提升(Hoisting)机制 1

块级声明 3

— let声明 3

— 禁止重声明 4

— const声明 4

— 临时死区(Temporal Dead Zone) 6

循环中的块作用域绑定 7

— 循环中的函数 8

— 循环中的let声明 9

— 循环中的const声明 10

全局块作用域绑定 12

块级绑定最佳实践的进化 13

小结 13

第2章 字符串和正则表达式 14

更好的Unicode支持 14

— UTF-16码位 15

— codePointAt()方法 16

— String.fromCodePoint()方法 17

— normalize()方法 17

— 正则表达式u修饰符 19

其他字符串变更 21

— 字符串中的子串识别 21

— repeat()方法 22

其他正则表达式语法变更 23

— 正则表达式y修饰符 23

— 正则表达式的复制 26

— flags属性 27

模板字面量 28

— 基础语法 28

— 多行字符串 29

— 字符串占位符 31

— 标签模板 32

小结 36

第3章 函数 37

函数形参的默认值 37

— 在ECMAScript 5中模拟默认参数 38

— ECMAScript 6中的默认参数值 38

— 默认参数值对arguments对象的影响 40

— 默认参数表达式 42

— 默认参数的临时死区 44

处理无命名参数 46

— ECMAScript 5中的无命名参数 46

— 不定参数 47

增强的Function构造函数 49

展开运算符 50

name属性 52

— 如何选择合适的名称 52

— name属性的特殊情况 52

明确函数的多重用途 54

— 在ECMAScript 5中判断函数被调用的方法 54

— 元属性(Metaproperty)new.target 55

块级函数 57

— 块级函数的使用场景 58

— 非严格模式下的块级函数 58

箭头函数 59

— 箭头函数语法 60

— 创建立即执行函数表达式 62

— 箭头函数没有this绑定 63

— 箭头函数和数组 65

— 箭头函数没有arguments绑定 66

— 箭头函数的辨识方法 66

尾调用优化 67

— ECMAScript 6中的尾调用优化 68

— 如何利用尾调用优化 69

小结 71

第4章 扩展对象的功能性 72

对象类别 72

对象字面量语法扩展 73

— 属性初始值的简写 73

— 对象方法的简写语法 74

— 可计算属性名(Computed Property Name) 75

新增方法 76

— Object.is()方法 76

— Object.assign()方法 77

重复的对象字面量属性 80

自有属性枚举顺序 81

增强对象原型 82

— 改变对象的原型 82

— 简化原型访问的Super引用 83

正式的方法定义 86

小结 88

第5章 解构:使数据访问更便捷 89

为何使用解构功能 89

对象解构 90

— 解构赋值 91

— 默认值 92

— 为非同名局部变量赋值 93

— 嵌套对象解构 94

数组解构 96

— 解构赋值 97

— 默认值 99

— 嵌套数组解构 99

— 不定元素 99

混合解构 101

解构参数 102

— 必须传值的解构参数 103

— 解构参数的默认值 104

小结 106

第6章 Symbol和Symbol属性 107

创建Symbol 107

Symbol的使用方法 109

Symbol共享体系 110

Symbol与类型强制转换 112

Symbol属性检索 112

通过well-known Symbol暴露内部操作 113

— Symbol.hasInstance方法 114

— Symbol.isConcatSpreadable属性 116

— Symbol.match、Symbol.replace、Symbol.search和Symbol.split属性 118

— Symbol.toPrimitive方法 120

— Symbol.toStringTag属性 122

— Symbol.unscopables属性 125

小结 127

第7章 Set集合与Map集合 128

ECMAScript 5中的Set集合与Map集合 129

该解决方案的一些问题 129

ECMAScript 6中的Set集合 131

— 创建Set集合并添加元素 131

— 移除元素 133

— Set集合的forEach()方法 133

— 将Set集合转换为数组 136

— Weak Set集合 136

ECMAScript 6中的Map集合 139

— Map集合支持的方法 140

— Map集合的初始化方法 141

— Map集合的forEach()方法 142

— Weak Map集合 143

小结 147

第8章 迭代器(Iterator)和生成器(Generator) 149

循环语句的问题 149

什么是迭代器 150

什么是生成器 151

— 生成器函数表达式 153

— 生成器对象的方法 154

可迭代对象和for-of循环 155

— 访问默认迭代器 156

— 创建可迭代对象 157

内建迭代器 158

— 集合对象迭代器 158

— 字符串迭代器 163

— NodeList迭代器 164

展开运算符与非数组可迭代对象 165

高级迭代器功能 166

— 给迭代器传递参数 166

— 在迭代器中抛出错误 168

— 生成器返回语句 170

— 委托生成器 171

异步任务执行 174

— 简单任务执行器 174

— 向任务执行器传递数据 176

— 异步任务执行器 177

小结 180

第9章 JavaScript中的类 181

ECMAScript 5中的近类结构 181

类的声明 182

— 基本的类声明语法 182

— 为何使用类语法 184

类表达式 186

— 基本的类表达式语法 186

— 命名类表达式 187

作为一等公民的类 189

访问器属性 190

可计算成员名称 192

生成器方法 193

静态成员 195

继承与派生类 196

— 类方法遮蔽 199

— 静态成员继承 199

— 派生自表达式的类 200

— 内建对象的继承 203

— Symbol.species属性 205

在类的构造函数中使用new.target 208

小结 210

第10章 改进的数组功能 211

创建数组 211

— Array.of()方法 212

— Array.from()方法 213

为所有数组添加的新方法 216

— find()方法和findIndex()方法 217

— fill()方法 217

— copyWithin()方法 218

定型数组 219

— 数值数据类型 220

— 数组缓冲区 221

— 通过视图操作数组缓冲区 221

定型数组与普通数组的相似之处 228

— 通用方法 229

— 相同的迭代器 230

— of()方法和from()方法 230

定型数组与普通数组的差别 231

— 行为差异 231

— 缺失的方法 232

— 附加方法 233

小结 234

第11章 Promise与异步编程 235

异步编程的背景知识 235

— 事件模型 236

— 回调模式 236

Promise的基础知识 239

— Promise的生命周期 239

— 创建未完成的Promise 242

— 创建已处理的Promise 244

— 执行器错误 247

全局的Promise拒绝处理 248

Node.js环境的拒绝处理 248

浏览器环境的拒绝处理 251

串联Promise 253

— 捕获错误 254

— Promise链的返回值 255

— 在Promise链中返回Promise 256

响应多个Promise 259

— Promise.all()方法 259

— Promise.race()方法 260

自Promise继承 262

基于Promise的异步任务执行 263

小结 267

第12章 代理(Proxy)和反射(Reflection)API 269

数组问题 269

代理和反射 270

创建一个简单的代理 271

使用set陷阱验证属性 272

用get陷阱验证对象结构(Object Shape) 274

使用has陷阱隐藏已有属性 275

用deleteProperty陷阱防止删除属性 277

原型代理陷阱 279

— 原型代理陷阱的运行机制 279

— 为什么有两组方法 281

对象可扩展性陷阱 282

— 两个基础示例 283

— 重复的可扩展性方法 284

属性描述符陷阱 285

— 给Object.defineProperty()添加限制 286

— 描述符对象限制 287

— 重复的描述符方法 288

ownKeys陷阱 290

函数代理中的apply和construct陷阱 291

— 验证函数参数 292

— 不用new调用构造函数 294

— 覆写抽象基类构造函数 296

— 可调用的类构造函数 297

可撤销代理 298

解决数组问题 299

— 检测数组索引 300

— 添加新元素时增加length的值 300

— 减少length的值来删除元素 302

— 实现MyArray类 304

将代理用作原型 307

— 在原型上使用get陷阱 307

— 在原型上使用set陷阱 308

— 在原型上使用has陷阱 309

— 将代理用作类的原型 310

小结 314

第13章 用模块封装代码 315

什么是模块 315

导出的基本语法 316

导入的基本语法 317

— 导入单个绑定 318

— 导入多个绑定 318

— 导入整个模块 318

— 导入绑定的一个微妙怪异之处 320

导出和导入时重命名 320

模块的默认值 321

— 导出默认值 321

— 导入默认值 322

重新导出一个绑定 323

无绑定导入 324

加载模块 325

— 在Web浏览器中使用模块 325

— 浏览器模块说明符解析 329

小结 330

附录A ECMAScript 6中较小的改动 331

附录B 了解ECMAScript 7(2016) 337

索引 343

评论 ······

大神就是大神,先看这本,再把阮一峰的那本当做工具手册就行了。

内容丰富,由浅入深,常读常新

去年秋天看完,还缺代理和反射章节没看。内容是不错的。翻译错误不少,有些比较严重。不知是否会有勘误,毕竟对开发者来说这本书挺重要的。大家可以配合英文原版和gitbook上的一本原创翻译一起看&4星都是给原作者的&希望出现更多ES6的好书。

阮一峰的那本学究气太重,感觉在读规范,这本就平易多了,语句都很容易理解。

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

推荐阅读

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册