具体描述
JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解。本套书直面当前JavaScript开发人员不求甚解的大趋势,深入理解语言内部的机制,全面介绍了JavaScript中常被人误解和忽视的重要知识点。本书是其下卷,主要介绍了JavaScript入门知识和对ES6及未来发展趋势的展望。
作者简介
作者:[美]凯尔?辛普森(Kyle Simpson) 译者:单业
Kyle Simpson,推崇开放的互联网,对JavaScript、HTML5、实时/端对端通信和Web性能有深入研究。他是技术书作家、技术培训师、讲师和开源社区的活跃成员。
目录信息
致谢 xvii
第 一部分 起步上路
序 2
第 1 章 深入编程 4
1.1 代码 4
1.2 表达式 5
1.3 实践 6
1.3.1 输出 7
1.3.2 输入 8
1.4 运算符 9
1.5 值与类型 11
1.6 代码注释 13
1.7 变量 14
1.8 块 16
1.9 条件判断 17
1.10 循环 18
1.11 函数 20
1.12 实践 23
1.13 小结 25
第 2 章 深入JavaScript 26
2.1 值与类型 26
2.1.1 对象 28
2.1.2 内置类型方法 30
2.1.3 值的比较 31
2.2 变量 35
2.3 条件判断 37
2.4 严格模式 39
2.5 作为值的函数 40
2.5.1 立即调用函数表达式 41
2.5.2 闭包 42
2.6 this标识符 44
2.7 原型 46
2.8 旧与新 47
2.8.1 polyfilling 47
2.8.2 transpiling 48
2.9 非JavaScript 49
2.10 小结 50
第 3 章 深入“你不知道的JavaScript”系列 51
3.1 作用域和闭包 51
3.2 this和对象原型 52
3.3 类型和语法 53
3.4 异步和性能 53
3.5 ES6及更新版本 54
3.6 小结 55
第 二部分 ES6及更新版本
序 58
第 1 章 ES?现在与未来 59
1.1 版本 60
1.2 transpiling 61
1.3 小结 63
第 2 章 语法 64
2.1 块作用域声明 64
2.1.1 let声明 65
2.1.2 const声明 68
2.1.3 块作用域函数 70
2.2 spread/rest 71
2.3 默认参数值 73
2.4 解构 77
2.4.1 对象属性复制模式 78
2.4.2 不只是声明 79
2.4.3 重复赋值 81
2.5 太多,太少,刚刚好 83
2.5.1 默认值赋值 84
2.5.2 嵌套解构 84
2.5.3 解构参数 85
2.6 对象字面量扩展 90
2.6.1 简洁属性 90
2.6.2 简洁方法 90
2.6.3 计算属性名 95
2.6.4 设定[[Prototype]] 96
2.6.5 super对象 97
2.7 模板字面量 98
2.7.1 插入表达式 99
2.7.2 标签模板字面量 100
2.8 箭头函数 103
2.9 for..of循环 109
2.10 正则表达式 111
2.10.1 Unicode标识 111
2.10.2 定点标识 112
2.10.3 正则表达式flags 116
2.11 数字字面量扩展 117
2.12 Unicode 118
2.12.1 支持Unicode的字符串运算 119
2.12.2 字符定位 121
2.12.3 Unicode标识符名 123
2.13 符号 123
2.13.1 符号注册 125
2.13.2 作为对象属性的符号 127
2.14 小结 128
第 3 章 代码组织 129
3.1 迭代器 129
3.1.1 接口 130
3.1.2 next()迭代 131
3.1.3 可选的return(..)和throw(..) 132
3.1.4 迭代器循环 133
3.1.5 自定义迭代器 134
3.1.6 迭代器消耗 137
3.2 生成器 138
3.2.1 语法 139
3.2.2 迭代器控制 144
3.2.3 提前完成 147
3.2.4 错误处理 149
3.2.5 Transpile生成器 151
3.2.6 生成器使用 152
3.3 模块 153
3.3.1 旧方法 153
3.3.2 前进 154
3.3.3 新方法 156
3.3.4 模块依赖环 164
3.3.5 模块加载 166
3.4 类 167
3.4.1 class 168
3.4.2 extends和super 169
3.4.3 new.target 174
3.4.4 static 175
3.5 小结 176
第 4 章 异步流控制 177
4.1 Promise 177
4.1.1 构造和使用Promise 178
4.1.2 Thenable 180
4.1.3 Promise API 181
4.2 生成器 + Promise 183
4.3 小结 185
第 5 章 集合 187
5.1 TypedArray 187
5.1.1 大小端(Endianness) 188
5.1.2 多视图 189
5.1.3 带类数组构造器 190
5.2 Map 192
5.2.1 Map值 194
5.2.2 Map键 194
5.3 WeakMap 195
5.4 Set 196
5.5 WeakSet 198
5.6 小结 199
第 6 章 新增API 200
6.1 Array 200
6.1.1 静态函数Array.of(..) 200
6.1.2 静态函数Array.from(..) 201
6.1.3 创建数组和子类型 204
6.1.4 原型方法copyWithin(..) 205
6.1.5 原型方法fill(..) 206
6.1.6 原型方法find(..) 206
6.1.7 原型方法findIndex(..) 207
6.1.8 原型方法entries()、values()、keys() 208
6.2 Object 209
6.2.1 静态函数Object.is(..) 209
6.2.2 静态函数Object.getOwnPropertySymbols(..) 210
6.2.3 静态函数Object.setPrototypeOf(..) 210
6.2.4 静态函数Object.assign(..) 211
6.3 Math 212
6.4 Number 214
6.4.1 静态属性 214
6.4.2 静态函数Number.isNaN(..) 214
6.4.3 静态函数Number.isFinite(..) 215
6.4.4 整型相关静态函数 215
6.5 字符串 216
6.5.1 Unicode函数 217
6.5.2 静态函数String.raw(..) 217
6.5.3 原型函数repeat(..) 217
6.5.4 字符串检查函数 218
6.6 小结 218
第 7 章 元编程 219
7.1 函数名称 219
7.2 元属性 222
7.3 公开符号 223
7.3.1 Symbol.iterator 223
7.3.2 Symbol.toStringTag与Symbol.hasInstance 224
7.3.3 Symbol.species 225
7.3.4 Symbol.toPrimitive 226
7.3.5 正则表达式符号 226
7.3.6 Symbol.isConcatSpreadable 227
7.3.7 Symbol.unscopables 228
7.4 代理 228
7.4.1 代理局限性 231
7.4.2 可取消代理 232
7.4.3 使用代理 233
7.5 Reflect API 240
7.6 特性测试 243
7.7 尾递归调用(Tail Call Optimization,TCO) 245
7.7.1 尾调用重写 247
7.7.2 非TCO优化 248
7.7.3 元在何处 250
7.8 小结 251
第 8 章 ES6之后 253
8.1 异步函数 254
8.2 Object.observe(..) 257
8.2.1 自定义改变事件 258
8.2.2 结束观测 259
8.3 幂运算符 260
8.4 对象属性与... 260
8.5 Array#includes 261
8.6 SIMD 262
8.7 WebAssembly (WASM) 262
8.8 小结 264
· · · · · · (收起)
读后感
用户评价
这本书的视角非常独特,它不是那种告诉你“怎么用”的API手册,而是带你走进JavaScript的“幕后”,去了解“为什么”它会这样工作。我之前一直觉得JavaScript的面向对象和许多传统后端语言的OOP概念不太一样,有些地方总觉得不够“纯粹”。《你不知道的JavaScript(下卷)》这本书,用一种非常现代、非常巧妙的方式,解释了JavaScript的原型继承机制。它不仅详细阐述了原型链的形成过程,还深入探讨了对象创建的不同方式,比如构造函数、工厂模式以及ES6的class语法,并分析了它们之间的联系与区别。书中关于模块化和命名空间的部分也让我受益匪浅,它让我理解了如何在大型项目中组织代码,避免命名冲突,并且能够更清晰地管理模块间的依赖关系。这本书最吸引我的地方在于,它始终保持着一种探索的精神,鼓励读者去质疑,去深入,去理解语言的本质。读完之后,我感觉自己对JavaScript的理解上升到了一个新的层次,能够更从容地应对各种复杂的编程挑战。
要说哪本书能让你彻底告别“玄学式”编程,那绝对是《你不知道的JavaScript(下卷)》!我之前写JavaScript,很多时候都是凭经验和感觉,遇到一些奇怪的行为,比如this指向问题,或者作用域链的困惑,往往只能死记硬背,或者依赖于一些“约定俗成”的写法。《你不知道的JavaScript(下卷)》这本书,就像一把锋利的解剖刀,将JavaScript的内核一一剖析。关于this的绑定规则,书中列举了各种情况,并且给出了清晰的判断方法,让我彻底告别了曾经的“this迷咒”。还有作用域和闭包,这两个曾经让我头疼欲 gemini,在书中得到了极大的澄清。它不仅讲解了它们是什么,更重要的是解释了它们为什么是这样工作的,以及在实际开发中如何利用这些特性来写出更安全、更可控的代码。这本书的优点在于,它不仅仅是罗列概念,更注重解释“为什么”和“怎么做”,让你真正理解JavaScript的精髓。读完这本书,我感觉自己的编程逻辑变得更加严谨,写出的代码也更加自信。
这本书的洞察力简直是惊为天人!作为一名多年的前端开发者,我一直对JavaScript的异步编程模式感到好奇又头疼。Promise、Generator、Async/Await,这些概念虽然我能用,但总是觉得少了那么点“通透感”。《你不知道的JavaScript(下卷)》这本书,就像一位经验丰富的老教授,耐心地为我揭示了事件循环(Event Loop)的运作原理。我之前只知道它存在,但具体是怎么工作的,微任务和宏任务的区别,以及它们在异步操作中的优先级,书中都做了极其详尽的讲解。读完关于事件循环的部分,我感觉自己终于抓住了JavaScript异步编程的“牛鼻子”。而且,书中对错误处理机制也进行了深入的探讨,让我理解了try...catch语句在不同场景下的适用性,以及如何更有效地管理和捕获异步操作中的错误。这本书不仅让我掌握了这些高级特性,更重要的是,它提升了我对JavaScript语言本身的理解深度,让我能够站在更高的维度去审视和编写代码。它带来的不仅仅是技能的提升,更是编程思维的升华,让我对未来的技术探索充满信心。
我曾经认为自己对JavaScript已经相当熟悉了,毕竟大小项目也参与了不少,框架也用过几种。直到我遇到了《你不知道的JavaScript(下卷)》,才发现自己之前的理解多么“皮毛”。这本书的深度和广度都超出了我的预期。它不仅涵盖了JavaScript的核心概念,比如异步编程、事件循环,还触及了许多我之前从未深入了解过的领域,比如内存管理和性能优化。书中对于内存泄漏的分析,让我意识到了很多之前可能忽视的细节,并且提供了切实可行的解决方案。它教我如何去识别潜在的内存问题,以及如何编写更符合内存管理最佳实践的代码。而且,对于一些ES6+的新特性,书中也做了非常深入的解读,不仅仅是介绍语法,更重要的是解释了这些新特性背后的设计理念以及它们是如何解决之前JavaScript的痛点的。这本书对我最大的价值在于,它提供了一个系统性的学习框架,让我能够更全面、更深入地理解JavaScript这门语言。它不仅仅是一本书,更像是一位引路人,为我的JavaScript学习之路指明了方向。
这本书简直是把我从JavaScript的迷雾中解救出来的灯塔!之前,我总觉得JavaScript用起来挺顺手的,各种框架、库也都能勉强驾驭,但总感觉心里没底,好像很多东西只是知其然而不知其所以然。尤其是遇到一些棘手的bug,或者需要进行更深层次的性能优化时,就显得捉襟见肘。翻开《你不知道的JavaScript(下卷)》这本书,简直是打开了新世界的大门。作者用一种非常清晰、逻辑严谨的方式,深入浅出地剖析了JavaScript的内部机制。像是闭包,我以前只是模模糊糊知道怎么用,但书中关于闭包的创建、内存管理以及在实际开发中可能遇到的陷阱,都讲得鞭辟入里,让我豁然开朗。还有原型链,这个听起来就让人头疼的概念,在书中被拆解得无比透彻,甚至还结合了生动的比喻,让我这个对底层原理不太感冒的读者都能轻松理解。这本书不仅仅是知识的堆砌,更是一种思维方式的引导,它教会我如何去思考JavaScript代码的运行方式,如何去预判潜在的问题,从而写出更健壮、更高效的代码。我强烈推荐给所有想要深入理解JavaScript、提升自己编程内功的开发者!
这一部感觉内容明显缩水了很多,深度不如从前,并且翻译很差。很多时候要翻出英文版来看。。。。
一般,感觉就是前两本的偷工减料合集
讲 ES5 的部分不如高程3,讲 ES6 的部分不如阮一峰。翻译也不行。
讲 ES5 的部分不如高程3,讲 ES6 的部分不如阮一峰。翻译也不行。
第三册相比前两册而言,就更加一般了。