es6 阮一峰官网(ES6 浅谈class继承机制)
- ES6 浅谈class继承机制
- 深入理解es6和es6标准入门哪本好
- Map 结构
- forof 循环遍历
文章来源阮一峰ES6入门,这里做要点掌握大纲。
class——构造函数的语法糖
ES5的继承:修改原型链
先创造子类的实例对象,再将父类的方法添加到this(Parent.apply(this) )
ES6的继承:通过extends实现继承
先将父类实例 的属性方法加到this上(super),然后再用子类的构造函数修改this
作为函数使用时,代表父类的构造函数,只能在子类构造函数中使用,super内部的this指向子类实例。
作为对象使用时,在静态方法中指向父类,在普通方法中,指向父类原型对象。
注意:super指向父类的原型对象,而不是父类实例,所以父类实例上的属性方法无法通过super调用。(父类构造函数里this调用的属性方法就是实例属性方法)
定义在父类实例上的属性应该是这样子
在普通方法中使用super 对象时, 方法内部的this指向当前的子类实例
对象总是继承自另一个对象,所以可以在任意一个对象里使用super
(1)子类的 proto 属性,表示构造函数的继承,总是指向父类。
(2)子类prototype属性的 proto 属性,表示方法的继承,总是指向父类的prototype属性。
我知道这张图可能不准确,但是这样记能让我一下子找到对应关系。
答:ES6的书籍主要有《深入理解ES6》、阮一峰老师的《ES6标准入门》、小问的《实战ES2015》这三本
现在正在学ES6,说一下这三本书各自的特点
1、《深入理解ES6》最大的特点是从浅到深。从为什么引入这个特性开始,一步一步地深入展开讲解。但有时就是由于过分的深入浅出,有头重脚轻的感觉。大篇幅的展开讲引入的原因,到如何使用特性时,反而不是很详细,或者说不是很系统。
总结一下,就是“为什么“的部分讲得深,“是什么“的部分讲得浅
2、《ES6标准入门》这本书继承了阮一峰老师一贯的风格,“猪肚”的部分夯地非常实,把一个特性的各种参数,各种使用场景,各种注意事项都讲得很清楚。比如,该特性有N个属性,M个方法。接下来,就开始系统地讲解这N个属性M个方法,所以,每部分的篇幅都很长
缺点是“为什么”的部分讲的相对少,有的甚至只有一句话。于是,学起来可能就有一种似懂非懂的感觉
1、Map 结构
作为构造函数,Map 也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。
事实上,不仅仅是数组,任何具有 Iterator 接口、且每个成员都是一个双元素的数组的数据结构都可以当作Map构造函数的参数。这就是说,Set和Map都可以用来生成新的 Map。
如果对同一个键多次赋值,后面的值将覆盖前面的值。
2、Map的实例属性和操作方法
3、Map的遍历方法
Map 的遍历顺序就是插入顺序。
Map 结构转为数组结构,比较快速的方法是使用扩展运算符(...)。
Map 还有一个forEach方法,与数组的forEach方法类似,也可以实现遍历。forEach方法还可以接受第二个参数,用来绑定this。
4、Map结构与其它结构进行相互转换
5、WeakMap
参考链接 : 阮一峰ES6教程
1、for...of 遍历数组
for...of循环可以代替数组实例的forEach方法。for...in循环读取键名,for...of循环读取键值。
2、for...of 遍历 Map 和 Set 结构
3、for...of 遍历 数组/Map/Set 之 keys()/values()/entries() 返回的对象
4、for...of 遍历字符串
5、for...of 遍历 NodeList对象
6、for...of 遍历 arguments对象
7、for...of 遍历 非 Iterator 的类数组对象
8、for...of 遍历 对象
对于普通的对象,for...of结构不能直接使用,会报错。使用 for...in 可以遍历对象的键名。
总之,for...in循环主要是为遍历对象而设计的,不适用于遍历数组。
另一个方法是使用 Generator 函数将对象重新包装一下。
9、for...of 可以与 break / continue / return 配合使用
参考链接 : 阮一峰ES6教程