《ECMAScript 6 入门》这本书是ES6学习和研究的一个非常合适的目标,作者很有想法,在出版的时候是以开源的形式出版的,所以电子的和纸质的版本都有。一开始我是买纸质书来学习的,在18年下半年花了2周的时间,学习了大概的东西,正好用于当时接下来的两个产品的改版。 19年来了,纸质书送给了别人,现在有重新梳理ES6知识点的想法,所以电子书就变成了重新学习的一个不二选择,而且电子书也有个优点,就是作者会把一些最新的ES标准内容,还会补充到里面,估计将来内容增加或者调整多了,应该还会再出新版的纸质书。 不管怎么说,在自己有条件的情况下,都值得去购买纸质书,这个行业需要更多类似的作者出来做类似地有价值的事情。
这本书包含的内容比较全面,但是从实际使用的角度来说,一股脑地从前学到后,不一定是一个很合适的方法。 比如说这本书里面在介绍数组的扩展、以及对象的扩展的时候,有比较多的内容在介绍ES6新增的数组和对象的api,我个人认为这些api不是不重要,但是不一定要在这本书里面学习,相反,如果数组、对象等内置对象的api很重要,那另外再单独地分别去学习这些内置对象会更全面一点,所以我在学习的时候,会选择性地忽略掉一些api相关的知识点;再比如这本书里面的Set、Map以及Proxy、Reflect这些知识点,js算是很晚才有这些知识点的语言,类比其它语言来看,这些点都算是比较高级的内容,学习它们的必要性是肯定的,但是不着急去学,不需要一开始就要把它们弄得特别熟练,看几遍掌握好它们被推出和应用的思想,在将来需要的时候,再回来加强学习也是可以的。
按照知识点的一些先后关系,以及知识点学习的必要性、重要程度,我把此书的学习内容规划为了4个部分。Part1是ES6语言新的一些基础特性,比如let&const声明、解构赋值等;Part2是ES6语言最核心的最重要的部分,包含Promise、Iterator接口、Generator函数、Async函数、Class声明和Module语法等等。熟练地掌握Part1和Part2,基本上等同于已经掌握了ES6。Part3是跟新的api相关的几个章节,字符串、正则、数值等;Part4是高级内容,Set、Map、Proxy和Reflect。整理如下:
原始章节序号 | 内容 | 阶段 |
---|---|---|
01 | let 和 const 命令 | Part1 |
02 | 变量的解构赋值 | Part1 |
07 | 函数的扩展 | Part1 |
08 | 数组的扩展 | Part1 |
09 | 对象的扩展 | Part1 |
11 | Symbol | Part1 |
15 | Promise 对象 | Part2 |
16 | Iterator 和 for…of 循环 | Part2 |
17 | Generator 函数的语法 | Part2 |
18 | Generator 函数的异步应用 | Part2 |
19 | async 函数 | Part2 |
20 | Class 的基本语法 | Part2 |
21 | Class 的继承 | Part2 |
22 | Module 的语法 | Part2 |
23 | Module 的加载实现 | Part2 |
03 | 字符串的扩展 | Part3 |
04 | 字符串的新增方法 | Part3 |
05 | 正则的扩展 | Part3 |
06 | 数值的扩展 | Part3 |
10 | 对象的新增方法 | Part3 |
12 | Set 和 Map 数据结构 | Part4 |
13 | Proxy | Part4 |
14 | Reflect | Part4 |
在学习过程中,我的想法是边学习边记录要点,为了防止变成复制原本的书籍内容,在记录要点的时候,尽量再从自身的角度做提炼和总结,应该假定自己是理解这些要点的,而不是在记录的时候,还要把详细的例子什么的,完全记录下来。 记录的内容应该变为自己快速参考和回顾的依据,不能“记账”。 重要章节的学习,至少应该产出一篇学习笔记,甚至更多。比如Generator函数,书籍里面提到了thunk函数和co模块,源码都比较简单,所以值得从源码角度去分析下Generator函数自动执行的细节,这样肯定会加深对这个知识点的理解。再比如Promise,这个知识点的实现,其实跟语言没有关系,其它的语言比如Object-c以及java语言,都可以实现它,所以在学习过程中,要是也能从实现层面去了解细节,肯定是更有好处的。
再有就是内置对象的学习,再定一个学习计划出来,专门学习几个重要常见的内置对象(从mdn上学),结合实例去理解和掌握,记录一些自己思维中的疏忽点、难点,将来什么时候忘了,可能只需要回来看一眼,就知道该怎么继续弄了。