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

探索 ES2016 和 ES2017

目录

    1. 关于本书你需要知道的内容
      1. 支持
    2. 关于作者
  1. 背景
    1. 1. ECMAScript 特性的 TC39 流程
      1. 1.1 谁设计了 ECMAScript?
      2. 1.2 ECMAScript 是如何设计的?
        1. 1.2.1 问题:ECMAScript 2015 (ES6) 版本过大
        2. 1.2.2 解决方案:TC39 流程
      3. 1.3 不要称它们为 ECMAScript 20xx 特性
      4. 1.4 扩展阅读
    2. 2. 常见问题解答:ES2016 和 ES2017
      1. 2.1 ECMAScript 2016 会不会太小?
  2. ECMAScript 2016
    1. 3. Array.prototype.includes
      1. 3.1 概述
      2. 3.2 数组方法 includes
      3. 3.3 常见问题
      4. 3.4 扩展阅读
    2. 4. 指数运算符 (**)
      1. 4.1 概述
      2. 4.2 用于指数运算的中缀运算符
      3. 4.3 示例
      4. 4.4 优先级
      5. 4.5 扩展阅读
  3. ECMAScript 2017
    1. 5. 异步函数
      1. 5.1 概述
        1. 5.1.1 变体
        2. 5.1.2 异步函数始终返回 Promise
        3. 5.1.3 通过 await 处理异步计算的结果和错误
      2. 5.2 理解异步函数
        1. 5.2.1 通过生成器编写异步代码
        2. 5.2.2 通过异步函数编写异步代码
        3. 5.2.3 异步函数同步启动,异步完成
        4. 5.2.4 返回的 Promise 不会被包装
      3. 5.3 使用 await 的技巧
        1. 5.3.1 不要忘记 await
        2. 5.3.2 如果“触发即忘记”,则不需要 await
        3. 5.3.3 await 是顺序的,Promise.all() 是并行的
      4. 5.4 异步函数和回调
        1. 5.4.1 Array.prototype.map()
        2. 5.4.2 Array.prototype.forEach()
      5. 5.5 使用异步函数的技巧
        1. 5.5.1 了解你的 Promise
        2. 5.5.2 立即调用异步函数表达式
        3. 5.5.3 使用异步函数进行单元测试
        4. 5.5.4 不要担心未处理的拒绝
      6. 5.6 扩展阅读
    2. 6. 共享内存和原子操作
      1. 6.1 并行与并发
        1. 6.1.1 并行模型
      2. 6.2 JS 并行历史
        1. 6.2.1 下一步:SharedArrayBuffer
      3. 6.3 共享数组缓冲区
        1. 6.3.1 创建和发送共享数组缓冲区
        2. 6.3.2 接收共享数组缓冲区
      4. 6.4 原子操作:安全地访问共享数据
        1. 6.4.1 问题:优化使得代码在不同工作线程之间的行为不可预测
        2. 6.4.2 解决方案:原子操作
        3. 6.4.3 问题:值撕裂
      5. 6.5 共享数组缓冲区的应用
        1. 6.5.1 共享数组缓冲区和 JavaScript 的运行至完成语义
        2. 6.5.2 共享数组缓冲区与 asm.js 和 WebAssembly
        3. 6.5.3 共享整数以外的数据
        4. 6.5.4 使用共享数组缓冲区的代码速度有多快?
      6. 6.6 示例
        1. 6.6.1 使用共享锁
        2. 6.6.2 实现共享锁
        3. 6.6.3 示例结论
      7. 6.7 共享内存和原子操作的 API
        1. 6.7.1 SharedArrayBuffer
        2. 6.7.2 Atomics
      8. 6.8 常见问题解答
        1. 6.8.1 哪些浏览器支持共享数组缓冲区?
      9. 6.9 扩展阅读
    3. 7. Object.entries()Object.values()
      1. 7.1 概述
        1. 7.1.1 Object.entries()
        2. 7.1.2 Object.values()
      2. 7.2 Object.entries()
        1. 7.2.1 通过 Object.entries() 设置映射
        2. 7.2.2 常见问题解答:Object.entries()
      3. 7.3 Object.values()
    4. 8. 新的字符串方法:padStartpadEnd
      1. 8.1 概述
      2. 8.2 为什么要填充字符串?
      3. 8.3 String.prototype.padStart(maxLength, fillString=' ')
        1. 8.3.1 padStart() 的简单实现
      4. 8.4 String.prototype.padEnd(maxLength, fillString=' ')
      5. 8.5 常见问题解答:padStartpadEnd
        1. 8.5.1 为什么不将填充方法称为 padLeftpadRight
    5. 9. Object.getOwnPropertyDescriptors()
      1. 9.1 概述
      2. 9.2 Object.getOwnPropertyDescriptors()
      3. 9.3 Object.getOwnPropertyDescriptors() 的用例
        1. 9.3.1 用例:将属性复制到对象中
        2. 9.3.2 用例:克隆对象
        3. 9.3.3 用例:具有任意原型的跨平台对象字面量
      4. 9.4 陷阱:复制使用 super 的方法
    6. 10. 函数参数列表和调用中的尾随逗号
      1. 10.1 概述
      2. 10.2 对象字面量和数组字面量中的尾随逗号
      3. 10.3 特性:允许在参数定义和函数调用中使用尾随逗号
© 2016 - 2018 Axel Rauschmayer