• 深入理解ES6
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

深入理解ES6

正版新书 新华官方库房直发 可开电子发票

58.41 5.9折 99 全新

库存7件

北京海淀
认证卖家担保交易快速发货售后保障

作者刘振涛 校

出版社电子工业出版社

出版时间2017-07

版次1

装帧平装

货号文轩12.19

上书时间2024-12-21

咚友图书专营店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
图书标准信息
  • 作者 刘振涛 校
  • 出版社 电子工业出版社
  • 出版时间 2017-07
  • 版次 1
  • ISBN 9787121317989
  • 定价 99.00元
  • 装帧 平装
  • 开本 16开
  • 纸张 胶版纸
  • 页数 396页
  • 字数 474千字
【内容简介】

    ES6是ECMAScript标准十余年来变动大的一个版本,其中添加了许多新的语法特性,既有大家耳熟能详的Promise,也有闻所未闻的Proxy代理和Reflection反射;既有可以通过转译器(Transpiler)等方式在旧版本浏览器中实现兼容的let、const、不定参数、展开运算符等功能,亦有无论如何都无法实现向前兼容的尾调用优化。深入理解ES6的特性对于所有JavaScript开发者而言至关重要,在可预见的未来,ES6中引入的语言特性会成为JavaScript应用程序的主流特性,这也是《深入理解ES6》的初衷。希望你通过阅读《深入理解ES6》可以了解ES6的新特性,并在需要时能够随时使用。

【作者简介】

   Nicholas C. Zakas自2000年以来一直致力于Web应用程序的开发,重点关注前端开发,并以写作和讲述前沿佳实践而闻名。他曾于雅虎主页任职5年有余,他也是多本书的作者,其中包括The Principles of Object-Oriented JavaScript(No Starch Press出版社)和Professional JavaScript for Web Developers(Wrox出版社)。

 

 

 

   关于技术评审

 

   Juriy Zaytsev(在网上以kangax著称)是纽约的一位前端网站开发人员。自2007年以来,他一直在探索JavaScript的怪异特性并撰写相关文章。Juriy为多个开源项目做出过贡献,其中包括Prototype.js和其他的热门项目,如他自己的Fabric.js。他是按需定制打印服务printio.ru的共同创始人,目前任职于Facebook。

【目录】

第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

点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP