
本网站不提供下载链接,喜欢看书的朋友请关注公众号:【lennylee的碎碎念】(lennyleede),首页回复:授人以渔,自动获取搜索资源的方法。
内容简介:
豆瓣
扫码直接下载
<![CDATA[
{{= title}}
{{if year}}
{{= year}}
{{/if}}
{{if type == “b”}}
{{= author_name}}
{{else type == “a” }}
{{if en_name}}
{{= en_name}}
{{/if}}
{{/if}}
]]>
深入理解ES6
作者:
【美】Nicholas C. Zakas
出版社:
电子工业出版社
出品方:
博文视点
原作名: Understanding ES6
译者:
刘振涛
出版年: 2017-7-1
页数: 372
定价: CNY 99.00
装帧: 平装
ISBN: 9787121317989
豆瓣评分
9.2
5星
4星
3星
2星
1星
深入理解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 阅读器
喜欢读”深入理解ES6″的人也喜欢
· · · · · ·
-
-
CSS揭秘
9.3
-
-
编程与类型系统
7.7
-
-
Node.js实战
8.0
-
-
Webpack实战
8.6
-
-
Vue.js设计与实现
9.6
-
-
深入React技术栈
8.1
-
-
SVG精髓(第2版)
8.5
短评
· · · · · ·
(
全部 135 条
)
-
11
有用
acAric
2017-09-04 21:39:26
满分的技术书。比阮一峰的好太多,es6的各个技术点都有讲到。es6的亮点在于模块化和yield,模块化最近几年已经非常成熟了,而yield的出现,势必改变promise的方式,一直不瘟不火的RxJS,随着yield的出现,势必慢慢落寞下去。
-
2
有用
Dasein
2019-06-12 23:44:47
这本书太棒了,需要多读几遍才行。
-
1
有用
西山
2018-11-28 10:04:14
大神就是大神,先看这本,再把阮一峰的那本当做工具手册就行了。
-
67
有用
Lenville
2017-06-24 23:40:01
历时一年久译成,希望能对大家有帮助,如有不完善或不准确之处欢迎反馈提供修订意见
-
1
有用
FE
2018-09-25 09:09:50
棒
我要写书评
深入理解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('你关注的人还没写过长评’);
}
});
});
]]>
《深入理解ES6》读书笔记
这篇书评可能有关键情节透露
遗留问题 setter函数以及getter函数的作用 对象的访问器属性:get的作用 54-58的函数多种用途以及块级函数看不懂 64-65的箭头函数没有this绑定看不懂 call、apply和bind方法 正确使用Symbol的方法 变量: 不可以访问 变量声明后:可以访问 但是值为undefined 变量初始化后:可…
(展开)
入门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…
(展开)
勘誤
p89 解构是一种打破数据解构 P94 这种语法实际上与传统对象字面量的语法相悖,原来的语法名称在冒号左边,值在右边;现在值在冒号右边,而对象的属性名在左边。 后面反了 p97 这一点与数组解构的约定不同 应为对象 p205 正常情况下,继承自 Array 的 slice() 方法应该返回 Arra…
(展开)
看完第一章,忍住不来豆瓣写第一次书评。
今天上午到的。第一章看完了,其他地方也翻了翻。总体来说,翻译很棒,就像是国人写的。而且本书最大的优点是排版和字体。这本书是我买过那么多书以来,字体最好看,排版最好的一本没有之一。 说了些外表,说一下内容吧。 这本书说的比较细,在我看来是比阮老师写的好一点的。…
(展开)
>
更多书评
4篇
论坛
· · · · · ·
| 什么时候出电子版呢? | 来自某人 | 6 回应 | 2022-05-29 16:07:25 |
| 问一下拿到书的同学,这本书的纸张是不是很薄? | 来自nino | 5 回应 | 2017-10-10 15:56:55 |
当前版本有售
· · · · · ·
这本书的其他版本
· · · · · ·
(
全部2
)
-
9.4分 64人读过
以下书单推荐
· · · · · ·
(
全部
)
- web前端工程师读书单
(小王) - 豆瓣9分以上计算机图书
(晚安,本杰明) - 程序员月读书单
(isay) - 前端
(cowboy) - 编程语言大观
(𝕾𝖚𝖓)
谁读这本书?
· · · · · ·
![]()
拾荒者
1月25日 想读
![]()
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


![[美国] 尼古拉斯·泽卡斯](https://img9.doubanio.com/img/author/medium/public/1513482513.85.jpg)







