探索 ES6
主页
请支持本书:购买 (PDF, EPUB, MOBI)捐赠
(广告,请勿屏蔽。)

目录

    1. 关于本书你需要知道的内容
      1. 读者:JavaScript 程序员
      2. 我为什么要读这本书?
      3. 如何阅读本书
      4. 本书的来源
      5. 词汇表
      6. 惯例
      7. GitHub 上的演示代码
      8. 侧边栏
      9. 脚注
    2. 前言
    3. 序言
    4. 致谢
    5. 关于作者
  1. 背景
    1. 1. 关于 ECMAScript 6 (ES6)
      1. 1.1 TC39 (Ecma 技术委员会 39)
      2. 1.2 ECMAScript 6 的设计过程
      3. 1.3 JavaScript 与 ECMAScript
      4. 1.4 升级到 ES6
      5. 1.5 ES6 的目标
      6. 1.6 ES6 特性分类
      7. 1.7 ECMAScript 简史
    2. 2. 常见问题解答:ECMAScript 6
      1. 2.1 我今天如何使用 ES6?
      2. 2.2 ECMAScript 6 现在不是叫做 ECMAScript 2015 吗?
      3. 2.3 如何将我的 ECMAScript 5 代码迁移到 ECMAScript 6?
      4. 2.4 学习 ECMAScript 5 还有意义吗?
      5. 2.5 ES6 是否过于臃肿?
      6. 2.6 ES6 规范是不是很大?
      7. 2.7 ES6 有数组推导式吗?
      8. 2.8 ES6 是静态类型吗?
    3. 3. 一个 JavaScript:在 ECMAScript 6 中避免版本控制
      1. 3.1 版本控制
      2. 3.2 严格模式和 ECMAScript 6
      3. 3.3 ES6 中的破坏性变化
      4. 3.4 结论
      5. 3.5 延伸阅读
    4. 4. ES6 核心特性
      1. 4.1 varconst/let
      2. 4.2 从 IIFE 到块级作用域
      3. 4.3 从字符串拼接到模板字面量
      4. 4.4 从函数表达式到箭头函数
      5. 4.5 处理多个返回值
      6. 4.6 forforEach()for-of
      7. 4.7 处理参数默认值
      8. 4.8 处理命名参数
      9. 4.9 arguments 到剩余参数
      10. 4.10 apply() 到展开运算符 (...)
      11. 4.11 concat() 到展开运算符 (...)
      12. 4.12 从对象字面量中的函数表达式到方法定义
      13. 4.13 从构造函数到类
      14. 4.14 从自定义错误构造函数到 Error 的子类
      15. 4.15 从对象到 Map
      16. 4.16 新的字符串方法
      17. 4.17 新的数组方法
      18. 4.18 从 CommonJS 模块到 ES6 模块
      19. 4.19 接下来做什么
  2. 数据
    1. 5. 新的数字和 Math 特性
      1. 5.1 概述
      2. 5.2 新的整数字面量
      3. 5.3 新的静态 Number 属性
      4. 5.4 新的 Math 功能
      5. 5.5 常见问题解答:数字
    2. 6. 新的字符串特性
      1. 6.1 概述
      2. 6.2 Unicode 代码点转义
      3. 6.3 字符串插值、多行字符串字面量和原始字符串字面量
      4. 6.4 迭代字符串
      5. 6.5 代码点的数值
      6. 6.6 检查是否包含
      7. 6.7 重复字符串
      8. 6.8 将正则表达式工作委托给其参数的字符串方法
      9. 6.9 参考:新的字符串方法
    3. 7. 符号
      1. 7.1 概述
      2. 7.2 一种新的原始类型
      3. 7.3 使用符号表示概念
      4. 7.4 符号作为属性的键
      5. 7.5 将符号转换为其他原始类型
      6. 7.6 符号的包装对象
      7. 7.7 使用符号跨越领域
      8. 7.8 常见问题解答:符号
      9. 7.9 知名符号的拼写:为什么是 Symbol.iterator 而不是 Symbol.ITERATOR(等等)?
      10. 7.10 符号 API
    4. 8. 模板字面量
      1. 8.1 概述
      2. 8.2 简介
      3. 8.3 使用标签模板字面量的示例
      4. 8.4 实现标签函数
      5. 8.5 常见问题解答:模板字面量和标签模板字面量
    5. 9. 变量和作用域
      1. 9.1 概述
      2. 9.2 通过 letconst 实现块级作用域
      3. 9.3 const 创建不可变变量
      4. 9.4 暂时性死区
      5. 9.5 循环头中的 letconst
      6. 9.6 参数作为变量
      7. 9.7 全局对象
      8. 9.8 函数声明和类声明
      9. 9.9 代码风格:constletvar
    6. 10. 解构
      1. 10.1 概述
      2. 10.2 背景:构造数据与提取数据
      3. 10.3 解构模式
      4. 10.4 模式如何访问值的内部?
      5. 10.5 默认值
      6. 10.6 更多对象解构特性
      7. 10.7 更多数组解构特性
      8. 10.8 你可以赋值给变量以外的东西
      9. 10.9 解构的陷阱
      10. 10.10 解构示例
      11. 10.11 解构算法
    7. 11. 参数处理
      1. 11.1 概述
      2. 11.2 参数处理作为解构
      3. 11.3 参数默认值
      4. 11.4 剩余参数
      5. 11.5 模拟命名参数
      6. 11.6 参数处理中的解构示例
      7. 11.7 代码风格提示
      8. 11.8 展开运算符 (...)
  3. 模块化
    1. 12. ECMAScript 6 中的可调用实体
      1. 12.1 概述
      2. 12.2 ES6 中的调用方式
      3. 12.3 使用可调用实体的建议
      4. 12.4 ES6 可调用实体详解
      5. 12.5 ES5 和 ES6 中的分派和直接方法调用
      6. 12.6 函数的 name 属性
      7. 12.7 常见问题解答:可调用实体
    2. 13. 箭头函数
      1. 13.1 概述
      2. 13.2 由于 this 的原因,传统函数是不好的非方法函数
      3. 13.3 箭头函数语法
      4. 13.4 词法变量
      5. 13.5 语法陷阱
      6. 13.6 立即执行的箭头函数
      7. 13.7 箭头函数与 bind()
      8. 13.8 箭头函数与普通函数
      9. 13.9 常见问题解答:箭头函数
    3. 14. 类之外的新 OOP 特性
      1. 14.1 概述
      2. 14.2 对象字面量的新特性
      3. 14.3 Object 的新方法
      4. 14.4 在 ES6 中遍历属性
      5. 14.5 赋值与定义属性
      6. 14.6 ECMAScript 6 中的 __proto__
      7. 14.7 ECMAScript 6 中的可枚举性
      8. 14.8 通过知名符号自定义基本语言操作
      9. 14.9 常见问题解答:对象字面量
    4. 15.
      1. 15.1 概述
      2. 15.2 要点
      3. 15.3 类的私有数据
      4. 15.4 简单的混入
      5. 15.5 类的细节
      6. 15.6 子类化的细节
      7. 15.7 物种模式
      8. 15.8 类的优缺点
      9. 15.9 常见问题解答:类
      10. 15.10 类的未来发展方向?
      11. 15.11 延伸阅读
    5. 16. 模块
      1. 16.1 概述
      2. 16.2 JavaScript 中的模块
      3. 16.3 ES6 模块的基础知识
      4. 16.4 导入和导出详解
      5. 16.5 ECMAScript 6 模块加载器 API
      6. 16.6 在浏览器中使用 ES6 模块
      7. 16.7 细节:导入作为导出的视图
      8. 16.8 ES6 模块的设计目标
      9. 16.9 常见问题解答:模块
      10. 16.10 ECMAScript 6 模块的优势
      11. 16.11 延伸阅读
  4. 集合
    1. 17. for-of 循环
      1. 17.1 概述
      2. 17.2 for-of 循环简介
      3. 17.3 陷阱:for-of 只能与可迭代值一起使用
      4. 17.4 迭代变量:const 声明与 var 声明
      5. 17.5 使用现有变量、对象属性和数组元素进行迭代
      6. 17.6 使用解构模式进行迭代
    2. 18. 新的数组特性
      1. 18.1 概述
      2. 18.2 新的静态 Array 方法
      3. 18.3 新的 Array.prototype 方法
      4. 18.4 ES6 和数组中的空洞
      5. 18.5 配置 concat() 展开的对象 (Symbol.isConcatSpreadable)
      6. 18.6 数组索引的数值范围
    3. 19. Map 和 Set
      1. 19.1 概述
      2. 19.2 Map
      3. 19.3 WeakMap
      4. 19.4 Set
      5. 19.5 WeakSet
      6. 19.6 常见问题解答:Map 和 Set
    4. 20. 类型化数组
      1. 20.1 概述
      2. 20.2 简介
      3. 20.3 ArrayBuffer
      4. 20.4 类型化数组
      5. 20.5 DataView
      6. 20.6 支持类型化数组的浏览器 API
      7. 20.7 扩展示例:JPEG SOF0 解码器
      8. 20.8 可用性
    5. 21. 可迭代对象和迭代器
      1. 21.1 概述
      2. 21.2 可迭代性
      3. 21.3 可迭代数据源
      4. 21.4 迭代语言结构
      5. 21.5 实现可迭代对象
      6. 21.6 更多可迭代对象的例子
      7. 21.7 常见问题:可迭代对象和迭代器
      8. 21.8 深入了解 ECMAScript 6 迭代协议
    6. 22. 生成器
      1. 22.1 概述
      2. 22.2 什么是生成器?
      3. 22.3 作为迭代器的生成器(数据生产)
      4. 22.4 作为观察者的生成器(数据消费)
      5. 22.5 作为协程的生成器(协作式多任务)
      6. 22.6 生成器的例子
      7. 22.7 迭代 API 中的继承(包括生成器)
      8. 22.8 风格考虑:星号前后的空格
      9. 22.9 常见问题:生成器
      10. 22.10 总结
      11. 22.11 扩展阅读
  5. V 标准库
    1. 23. 新的正则表达式特性
      1. 23.1 概述
      2. 23.2 新标志 `/y`(粘性匹配)
      3. 23.3 新标志 `/u`(Unicode)
      4. 23.4 新的数据属性 `flags`
      5. 23.5 `RegExp()` 可用作复制构造函数
      6. 23.6 委托给正则表达式方法的字符串方法
    2. 24. 异步编程(背景)
      1. 24.1 JavaScript 调用栈
      2. 24.2 浏览器事件循环
      3. 24.3 异步接收结果
      4. 24.4 展望未来
      5. 24.5 扩展阅读
    3. 25. 用于异步编程的 Promise
      1. 25.1 概述
      2. 25.2 简介:Promise
      3. 25.3 第一个例子
      4. 25.4 理解 Promise 的三种方式
      5. 25.5 创建和使用 Promise
      6. 25.6 例子
      7. 25.7 创建 Promise 的其他方式
      8. 25.8 Promise 链式调用
      9. 25.9 常见的 Promise 链式调用错误
      10. 25.10 错误处理技巧
      11. 25.11 组合 Promise
      12. 25.12 两个有用的附加 Promise 方法
      13. 25.13 Node.js:将基于回调的同步函数与 Promise 一起使用
      14. 25.14 兼容 ES6 的 Promise 库
      15. 25.15 下一步:通过生成器使用 Promise
      16. 25.16 深入了解 Promise:一个简单的实现
      17. 25.17 Promise 的优点和局限性
      18. 25.18 参考:ECMAScript 6 Promise API
      19. 25.19 扩展阅读
  6. VI 杂项
    1. 26. ES6 中的 Unicode
      1. 26.1 ES6 中对 Unicode 的支持更好
      2. 26.2 ES6 中的转义序列
    2. 27. 尾调用优化
      1. 27.1 什么是尾调用优化?
      2. 27.2 检查函数调用是否处于尾部位置
      3. 27.3 尾递归函数
    3. 28. 使用代理进行元编程
      1. 28.1 概述
      2. 28.2 编程与元编程
      3. 28.3 代理说明
      4. 28.4 代理的用例
      5. 28.5 代理 API 的设计
      6. 28.6 常见问题:代理
      7. 28.7 参考:代理 API
      8. 28.8 总结
      9. 28.9 扩展阅读
    4. 29. ECMAScript 6 的代码风格提示
    5. 30. ES6 新特性概述
      1. 30.1 ES6 特性分类
      2. 30.2 新的数字和 `Math` 特性
      3. 30.3 新的字符串特性
      4. 30.4 符号
      5. 30.5 模板字面量
      6. 30.6 变量和作用域
      7. 30.7 解构
      8. 30.8 参数处理
      9. 30.9 ECMAScript 6 中的可调用实体
      10. 30.10 箭头函数
      11. 30.11 类之外的新 OOP 特性
      12. 30.12
      13. 30.13 模块
      14. 30.14 `for-of` 循环
      15. 30.15 新的数组特性
      16. 30.16 映射和集合
      17. 30.17 类型化数组
      18. 30.18 可迭代对象和迭代器
      19. 30.19 生成器
      20. 30.20 新的正则表达式特性
      21. 30.21 用于异步编程的 Promise
      22. 30.22 使用代理进行元编程
  7. 注释
© 2015 - 2018 Axel Rauschmayer(封面作者:Fran Caye)
谨以此书献给那位不可能的女孩,她教会了我很多关于爱与生活的道理。