http://www.infoq.com/cn/es6-in-depth/
深入浅出ES6(一):ES6是什么
- 可怜的ES4(引一篇)
深入浅出ES6(二):迭代器和for-of循环
-
再提醒一次坑爹的for-in
- 只应该在遍历对象属性时使用
-
for-of
- 为遍历集合类型而设计
- 支持解构map
- 依靠迭代器方法(有.next方法)
jQuery.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator];
-
提到的几个新类型
- Symbols
- Set
- Map
深入浅出ES6(三):生成器 Generators
- 生成器不是线程
- 生成器是迭代器
- 内建.next()和Symbol.iterator方法的实现
- 外两篇
深入浅出ES6(四):模板字符串
- 反撇号(`)
- 不能替代模板引擎
- 标签模板(tagged templates)
- 一个Markdown tip: multiple backticks
深入浅出ES6(五):不定参数和默认参数
- 不定参数
- ...
- 没有额外参数时不定参数会是空数组
- 默认参数
- 自左向右求值
- 后续参数可以使用之前已填充的参数值
深入浅出ES6(六):解构 Destructuring
- 数组与迭代器解构
[ variable1, variable2, ..., variableN ] = array;
- 支持任意深度解构
- 可以留空跳过
- 支持不定参数
- 支持任意迭代器
- 对象的解构
- 赋值语句前没有let、const或var关键字时应以小括号包裹
- 可以提供默认值
- 实际应用
- 函数参数定义
- 配置对象参数
- 与迭代器协议协同使用
- 多重返回值
深入浅出ES6(七):箭头函数 Arrow Functions
- 浏览器中的JavaScript引擎将<!--这四个字符解析为单行注释的起始部分
- 当前的markdown引擎似乎也将<!--解析成注释了,必须加转义才能显示
- 这种注释风格在ES6中被标准化了
- 你一定没想到过的趋向于运算符
-->
(:D答案见此)
- 箭头函数
- 用小括号包裹对象字面量
- 箭头函数this值继承自外围作用域
- ES6的方法语法
// old
{
...
addAll: function addAll(pieces) {
_.each(pieces, piece => this.add(piece));
},
...
}
// new
{
...
addAll(pieces) {
_.each(pieces, piece => this.add(piece));
},
...
}
深入浅出ES6(八):Symbols
- 第七种类型的原始值
- Undefined 未定义
- Null 空值
- Boolean 布尔类型
- Number 数字类型
- String 字符串类型
- Object 对象类型
- Symbols
- 以symbol为键的属性与数组元素类似,不能被类似obj.name的点号法访问,必须使用方括号访问这些属性
- symbol不能被自动转换为字符串
- 三种生成方法
- Symbol()
- Symbol.for(string)
- Symbol.iterator
深入浅出ES6(九):学习Babel和Broccoli,马上就用ES6
深入浅出ES6(十):集合
- Set,Map,WeakSet和WeakMap
- 弱集合实际上是用 ephemeron 表实现的
- 为了隐藏垃圾回收的不确定性(不是很懂,没看实现)
深入浅出ES6(十一):生成器 Generators,续篇
- yield暂停后可以
- generator.next(value)
- generator.return()
- generator.throw(error)
- 什么也不做
- 普通yield表达式只生成一个值,而yield*表达式可以通过迭代器进行迭代生成所有的值。
深入浅出ES6(十二):代理 Proxies
- 为JavaScript中最基本的概念“对象(object)”引入了虚拟化支持
- 对象到底是什么
- ECMAScript规范
- 将对象定义为“type对象的成员”
- 对象是属性的集合
- 所有对象的通用接口是14种内部方法组成的集合
- ECMAScript规范
- 代理句柄
深入浅出ES6(十三):类 Class
- 方法定义语法
- 类定义语法
深入浅出ES6(十四):let和const
- JS没有块级作用域
- let是更完美的var
- const
深入浅出ES6(十五):子类 Subclassing
- extends可以接驳任意合法且拥有prototype属性的构造函数
- 另一个类
- 源自现有继承框架(译者注:作者指的是原型继承,即使在JavaScript中类继承的本质也是原型继承)的近类函数
- 一个普通的函数
- 一个包含一个函数或类的变量
- 一个对象上的属性访问
- 一个函数调用
- Super属性
- 派生类构造函数
- new.target
- 用defineProperty和getOwnPropertyDescriptor实现mixin
深入浅出ES6(十六):模块 Modules
- 在ES6模块中默认情况在严格模式下运行
- export
- 可以导出所有的最外层函数、类以及var、let或const声明的变量
- 可以重命名
- import
- 可以重命名
- default exports
- 模块对象
- 聚合模块
- 静态模块系统
深入浅出ES6(十七):展望未来
- Promise
- 块级作用域内部函数
- 函数名称
- Object.assign
- 应用于函数调用的展开(Spread)运算符
- 应用于构建数组的展开运算符
- 完全尾调用 (SICP又露面了)