《深入理解ES6》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)NICHOLASC.ZAKAS著;刘振涛译;贺师俊,张克军,李松峰审校
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2017
  • ISBN:9787121317989
  • 页数:372 页
图书介绍:在整个JavaScript语言的发展历史中,ECMAScript 6代表了最大的核心变化。最新的ECMAScript 6不仅增加了新的对象类型,还添加了新的语法和令人兴奋的新功能。通过多年的研究和讨论,ECMAScript 6在2014年达到了功能完善的状态。但是要让所有的JavaScript环境都能支持ECMAScript 6还需要一段时间,因此还是有必要了解即将出现的以及已经可用的功能。

第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