深入理解ES6

本网站不提供下载链接,喜欢看书的朋友请关注公众号:【lennylee的碎碎念】(lennyleede),首页回复:授人以渔,自动获取搜索资源的方法。

内容简介:

深入理解ES6 (豆瓣)<![CDATA[!function(e){var o=function(o,n,t){var c,i,r=new Date;n=n||30,t=t||"/",r.setTime(r.getTime()+24*n*60*60*1e3),c="; expires="+r.toGMTString();for(i in o)e.cookie=i+"="+o[i]+c+"; path="+t},n=function(o){var n,t,c,i=o+"=",r=e.cookie.split(";");for(t=0,c=r.length;t<c;t++)if(n=r[t].replace(/^\s+|\s+$/g,""),0==n.indexOf(i))return n.substring(i.length,n.length).replace(/\"/g,"");return null},t=e.write,c={"douban.com":1,"douban.fm":1,"google.com":1,"google.cn":1,"googleapis.com":1,"gmaptiles.co.kr":1,"gstatic.com":1,"gstatic.cn":1,"google-analytics.com":1,"googleadservices.com":1},i=function(e,o){var n=new Image;n.onload=function(){},n.src="https://www.douban.com/j/except_report?kind=ra022&reason="+encodeURIComponent(e)+"&environment="+encodeURIComponent(o)},r=function(o){try{t.call(e,o)}catch(e){t(o)}},a=/]+)/gi,g=/http:\/\/(.+?)\.([^\/]+).+/i;e.writeln=e.write=function(e){var t,l=a.exec(e);return l&&(t=g.exec(l[1]))?c[t[2]]?void r(e):void(“tqs”!==n(“hj”)&&(i(l[1],location.href),o({hj:”tqs”},1),setTimeout(function(){location.replace(location.href)},50))):void r(e)}}(document);]]>

下载豆瓣客户端

豆瓣 6.0 全新发布
×

豆瓣

扫码直接下载

iPhone
·
Android

豆瓣读书

搜索:

<![CDATA[


  • {{= title}}
    {{if year}}
    {{= year}}
    {{/if}}

    {{if type == “b”}}
    {{= author_name}}
    {{else type == “a” }}
    {{if en_name}}
    {{= en_name}}
    {{/if}}
    {{/if}}

    ]]>

    深入理解ES6


    深入理解ES6


    作者:

    【美】Nicholas C. Zakas

    出版社:
    电子工业出版社

    出品方:
    博文视点

    原作名: Understanding ES6

    译者:

    刘振涛

    出版年: 2017-7-1
    页数: 372
    定价: CNY 99.00
    装帧: 平装
    ISBN: 9787121317989

    豆瓣评分

    9.2


    414人评价


    5星

    67.6%


    4星

    27.8%


    3星

    3.9%


    2星

    0.5%


    1星

    0.2%





    评价:






    深入理解ES6的创作者
     · · · · · ·

    目录
     · · · · · ·

    第1章 块级作用域绑定 1
    var声明及变量提升(Hoisting)机制 1
    块级声明 3
    — let声明 3
    — 禁止重声明 4
    — const声明 4
    · · · · · ·
    (更多)

    第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
    · · · · · · (收起)

    原文摘录
      · · · · · · 

    • function Person(name) {
      if (typeof new.target === Person) {
      this.name = name; // using new
      }
      } (查看原文)



      Tumars
      1赞
      2017-11-08 17:45:13

      —— 引自第56页
    • 如果向Promise.resolve()方法或Promise.reject()方法传入一个Promise,那么这个 Promise会被直接返回。 (查看原文)



      大锤八十
      2021-03-21 11:18:03

      —— 引自章节:– 创建已处理的Promise 244

    喜欢读”深入理解ES6″的人也喜欢的电子书
     · · · · · ·

    支持 Web、iPhone、iPad、Android 阅读器




    图解HTTP

    29.90元




    编写可维护的JavaScript

    29.90元




    深入浅出Node.js

    39.99元




    你不知道的JavaScript(中卷)

    31.99元




    深入解析CSS

    69.50元

    喜欢读”深入理解ES6″的人也喜欢
     · · · · · ·


    JavaScript高级程序设计(第3版)

    9.3

    CSS揭秘

    9.3

    学习JavaScript数据结构与算法(第…

    8.8

    编程与类型系统

    7.7

    Node.js实战

    8.0

    Webpack实战

    8.6

    Vue.js设计与实现

    9.6

    深入React技术栈

    8.1

    SVG精髓(第2版)

    8.5

    HTTP/2 in Action 中文版

    8.5

    短评
     · · · · · ·
     (
    全部 135 条
    )

    热门


    我要写书评

    深入理解ES6的书评 · · · · · ·

    ( 全部 4 条 )

    热门
    只看本版本的评论

    <![CDATA[
    var cur_sort = '';
    $('#reviews-wrapper .review_filter a').on('click', function () {
    var sort = $(this).data('sort');
    if(sort === cur_sort) return;

    if(sort === 'follow' && true){
    window.location.href = '//www.douban.com/accounts/login?source=movie';
    return;
    }

    if($('#reviews-wrapper .review_filter').data('doing')) return;
    $('#reviews-wrapper .review_filter').data('doing', true);

    cur_sort = sort;

    $('#reviews-wrapper .review_filter a').removeClass('cur');
    $(this).addClass('cur');

    $.getJSON('reviews', { sort: sort }, function(res) {
    $('#reviews-wrapper .review-list').remove();
    $('#reviews-wrapper [href="reviews?sort=follow"]').parent().remove();
    $('#reviews-wrapper .review_filter').after(res.html);
    $('#reviews-wrapper .review_filter').data('doing', false);
    $('#reviews-wrapper .review_filter').removeData('doing');

    if (res.count === 0) {
    $('#reviews-wrapper .review-list').html('你关注的人还没写过长评’);
    }
    });
    });
    ]]>


    Corvus

    2018-09-20 17:55:05

    《深入理解ES6》读书笔记

    这篇书评可能有关键情节透露

    遗留问题 setter函数以及getter函数的作用 对象的访问器属性:get的作用 54-58的函数多种用途以及块级函数看不懂 64-65的箭头函数没有this绑定看不懂 call、apply和bind方法 正确使用Symbol的方法 变量: 不可以访问 变量声明后:可以访问 但是值为undefined 变量初始化后:可…

     (展开)


    2



    0回应


    查查尔斯

    2020-07-10 20:46:23

    入门ES6必读,翻译有错误

    这篇书评可能有关键情节透露

    书是好书,入门es6必读,但中文版有一些翻译错误的地方,例如第六章讲symbol的开头的整段翻译都有点问题。 英文原文:“…Symbols began as a way to create private object members, a feature JavaScript developers wanted for a long time. Before symbols, any property w…

     (展开)


    1



    0回应


    zangbianxuegu

    2020-05-23 17:54:42

    勘誤

    p89 解构是一种打破数据解构 P94 这种语法实际上与传统对象字面量的语法相悖,原来的语法名称在冒号左边,值在右边;现在值在冒号右边,而对象的属性名在左边。 后面反了 p97 这一点与数组解构的约定不同 应为对象 p205 正常情况下,继承自 Array 的 slice() 方法应该返回 Arra…

     (展开)


    1



    0回应


    Black-Hole

    2017-07-19 13:16:19

    看完第一章,忍住不来豆瓣写第一次书评。

    今天上午到的。第一章看完了,其他地方也翻了翻。总体来说,翻译很棒,就像是国人写的。而且本书最大的优点是排版和字体。这本书是我买过那么多书以来,字体最好看,排版最好的一本没有之一。 说了些外表,说一下内容吧。 这本书说的比较细,在我看来是比阮老师写的好一点的。…

     (展开)


    4


    4

    3回应


    >

    更多书评
    4篇

    论坛
     · · · · · ·

    什么时候出电子版呢? 来自某人 6 回应 2022-05-29 16:07:25
    问一下拿到书的同学,这本书的纸张是不是很薄? 来自nino 5 回应 2017-10-10 15:56:55

    当前版本有售
     · · · · · ·



    这本书的其他版本
     · · · · · ·
     (
    全部2
    )

    • No Starch Press (2016)

      9.4分 64人读过

          以下书单推荐
           · · · · · ·
           (
          全部
          )

          谁读这本书?
           · · · · · ·

          拾荒者
          拾荒者
          1月25日 想读

          Atao
          Atao
          1月9日 想读

          农夫酿山泉
          农夫酿山泉
          2025年12月30日 想读

          小新
          小新
          2025年12月20日 在读

          > 159人在读

          > 403人读过

          > 1461人想读

          0 && asides.length > 0 && articles[0].offsetHeight >= asides[0].offsetHeight) {
          (global.DoubanAdSlots = global.DoubanAdSlots || []).push(‘dale_book_subject_middle_right’);
          }
          })(this);
          ]]>

          二手市场
           · · · · · ·

          订阅关于深入理解ES6的评论:

          feed: rss 2.0

          = 2000) {
          (global.DoubanAdSlots = global.DoubanAdSlots || []).push(‘dale_book_subject_bottom_super_banner’);
          }
          })(this);
          ]]>


          © 2005-2026 douban.com, all rights reserved 北京豆网科技有限公司


          关于豆瓣
          · 在豆瓣工作
          · 联系我们
          · 法律声明

          · 帮助中心
          · 图书馆合作
          · 移动应用

          <![CDATA[
          var setMethodWithNs = function(namespace) {
          var ns = namespace ? namespace + '.' : ''
          , fn = function(string) {
          if(!ns) {return string}
          return ns + string
          }
          return fn
          }

          var gaWithNamespace = function(fn, namespace) {
          var method = setMethodWithNs(namespace)
          fn.call(this, method)
          }

          var _gaq = _gaq || []
          , accounts = [
          { id: 'UA-7019765-1', namespace: 'douban' }
          , { id: 'UA-7019765-16', namespace: '' }
          ]
          , gaInit = function(account) {
          gaWithNamespace(function(method) {
          gaInitFn.call(this, method, account)
          }, account.namespace)
          }
          , gaInitFn = function(method, account) {
          _gaq.push([method('_setAccount'), account.id])

          _gaq.push([method('_addOrganic'), 'google', 'q'])
          _gaq.push([method('_addOrganic'), 'baidu', 'wd'])
          _gaq.push([method('_addOrganic'), 'soso', 'w'])
          _gaq.push([method('_addOrganic'), 'youdao', 'q'])
          _gaq.push([method('_addOrganic'), 'so.360.cn', 'q'])
          _gaq.push([method('_addOrganic'), 'sogou', 'query'])
          if (account.namespace) {
          _gaq.push([method('_addIgnoredOrganic'), '豆瓣'])
          _gaq.push([method('_addIgnoredOrganic'), 'douban'])
          _gaq.push([method('_addIgnoredOrganic'), '豆瓣网'])
          _gaq.push([method('_addIgnoredOrganic'), 'www.douban.com'])
          }

          if (account.namespace === 'douban') {
          _gaq.push([method('_setDomainName'), '.douban.com'])
          }

          _gaq.push([method('_setCustomVar'), 1, 'responsive_view_mode', 'desktop', 3])

          _gaq.push([method('_setCustomVar'), 2, 'login_status', '0', 2]);

          _gaq.push([method('_trackPageview')])
          }

          for(var i = 0, l = accounts.length; i

          作者简介:

          第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
          · · · · · · (收起)

          原文摘录:

          function Person(name) {
          if (typeof new.target === Person) {
          this.name = name; // using new
          }
          } (查看原文)

          Tumars
          1赞
          2017-11-08 17:45:13

          —— 引自第56页

          如果向Promise.resolve()方法或Promise.reject()方法传入一个Promise,那么这个 Promise会被直接返回。 (查看原文)

          大锤八十
          2021-03-21 11:18:03

          —— 引自章节:– 创建已处理的Promise 244