ES6 标准入门

第1章 ECMAScript简介
1.1 ECMAScript和JavaScript的关系
1.2 ECMAScript的历史
ES6 是 ECMA 为 JavaScript 制定的第 6 个标准版本,相关历史可查看此章节《ES6-ECMAScript6 简介》。
标准委员会最终决定,标准在每年 6 月正式发布并作为当年的正式版本,接下来的时间里就在此版本的基础上进行改动,直到下一年 6 月草案就自然变成新一年的版本,这样一来就无需以前的版本号,只要用年份标记即可。ECMAscript 2015 是在 2015 年 6 月发布 ES6 的第一个版本。以此类推,ECMAscript 2016 是 ES6 的第二个版本、 ECMAscript 2017 是 ES6 的第三个版本。ES6 既是一个历史名词也是一个泛指,含义是 5.1 版本以后的 JavaScript 下一代标准,目前涵盖了 ES2015、ES2016、ES2017、ES2018、ES2019、ES2020。
所以有些文章上提到的 ES7(实质上是 ES2016)、ES8(实质上是 ES2017)、ES9(实质上是ES2018)、ES10(实质上是 ES2019)、ES11(实质上是 ES2020),实质上都是一些不规范的概念。从 ES1 到 ES6,每个标准都是花了好几年甚至十多年才制定下来,你一个 ES6 到 ES7,ES7 到 ES8,才用了一年,按照这样的定义下去,那不是很快就 ES20 了。用正确的概念来说 ES6 目前涵盖了 ES2015、ES2016、ES2017、ES2018、ES2019、ES2020。
1.3 部署进度
1.4 Babel转码器
1.4 Babel转码器
1.5 Traceur转码器
1.6 ECMAScript7
第2章 let和const命令
2.1 let命令
2.2 块级作用域
2.3 const命令
2.4 跨模块常量
2.5 全局对象的属性
第3章 变量的解构赋值
3.1 数据的解构赋值
3.2 对象的解构赋值
3.3 字符串的解构赋值
3.4 数值和布尔值的解构赋值
3.5 函数参数的解构赋值
3.6 圆括号问题
3.7 用途
第4章 字符串的扩展
4.1 字符串的Unicode表示法
4.2 codePointAt()
4.3 String.fromCodePoint()
4.4 字符串的遍历器接口
4.5 at()
4.6 normalize()
4.7 includes()、startWidth()、endsWith()
4.8 repeat()
4.9 padStart()、padEnd()
4.10 模版字符串
4.11 实例:模版编译
4.12 标签模版
4.13 String.raw()
第5章 正则的扩展
5.1 RegExp构造函数
5.2 字符串的正则方法
5.3 u修饰符
5.4 y修饰符
5.5 sticky属性
5.6 flags属性
5.7 RegExp.escape()
第6章 Math对象的扩展
6.1 二进制和八进制数值表示法
6.2 Number.isFinite()、Number.isNaN()
6.3 Number.parseInt()、Number.parseFloat()
6.4 Number.isInteger()
6.5 Number.EPSILON
6.6 安全整数和Number.isSafeInteger()
6.7 Math对象的扩展
6.8 指数运算符
第7章 数组的扩展
7.1 Array.from()
7.2 Array.of()
7.3 数组实例的copyWithin()
7.4 数组实例的find()和findIndex()
7.5 数组实例的fill()
7.6 数组实例的entries()、keys()和values()
7.7 数组实例的includes()
7.8 数组的空位
7.9 数组推导
第8章 函数的扩展
8.1 函数参数的默认值
8.2 rest参数
8.3 扩展运算符
8.4 name属性
8.5 箭头函数
8.6 函数绑定
8.7 尾调用优化
8.8 函数参数的尾逗号
第9章 对象的扩展
9.1 属性的简洁表示法
9.2 属性名表达式
9.3 方法的name属性
9.4 Object.is()
9.5 Object.assign()
9.6 属性的可枚举性
9.7 属性的遍历
9.8 _proto_属性、Object.setPrototypeOf()、Object.getPrototypeOf()
9.9 对象的扩展运算符
第10章 Symbol
10.1 概述
10.2 作为属性名的Symbol
10.3 实例:消除魔法字符串
10.4 属性名的遍历
10.5 Symbol.for()、Symbol.keyFor()
10.6 内置的Symbol值
第11章 Symbol
11.1 Proxy概述
11.2 Proxy实例的方法
get()
set()
apply()
has()
construct()
deleteProperty()
enumerate()
getOwnPropertyDescriptor()
getPrototypeOf()
isExtensible()
ownKeys()
preventExtensions()
setPrototypeOf()
11.3 Proxy.revocable()
11.4 Reflect概述
11.5 Reflect对象的方法
第12章 二进制数组
12.1 ArrayBuffer对象
12.2 TypedArray视图
12.3 复合视图
12.4 DataView视图
12.5 二进制数组的应用
第13章 Set和Map数据结构
13.1 Set
13.2 WeakSet
13.3 Map
13.4 WeakMap
第14章 Symbol
14.1 概述
14.2 作为属性名的Symbol
14.3 实例:消除魔法字符串
14.4 属性名的遍历
14.5 Symbol.for()、Symbol.keyFor()
14.6 内置的Symbol值
第15章 Generator函数
15.1 简介
15.2 next方法的参数
15.3 for...of循环
15.4 Generator.prototype.throw()
15.5 Generator.prototype.return()
15.6 yield* 语句
15.7 作为对象属性的Generator函数
15.8 Generator函数的this
15.9 Generator函数推导
15.10 含义
15.11 应用
第16章 Promise对象
16.1 Promise的含义
16.2 基本用法
16.3 Promise.prototype.then()
16.4 Promise.prototype.catch()
16.5 Promise.all()
16.6 Promise.race()
16.7 Promise.resolve()
16.8 Promise.reject()
16.9 两个有用的附加方法
16.10 应用
16.11 async函数
第17章 异步函数和async函数
17.1 基本概念
17.2 Generator函数
17.3 Thunk函数
17.4 co模块
17.5 async函数
第18章 Class
18.1 Class的基本语法
18.2 Class的继承
18.3 原生构造函数的继承
18.4 Class的取值函数(getter)和存值函数(setter)
18.5 Class的Generator方法
18.6 Class的静态方法
18.7 Class的静态属性
18.8 new.target属性
18.9 Mixin模式的实现
第19章 修饰器
19.1 类的修饰
19.2 方法的修饰
19.3 为什么修饰器不能用于函数
19.4 core-decorator.js
19.5 使用修饰器实现自动发布事件
19.6 Mixin
19.7 Trait
19.8 Babel转码器的支持
第20章 Module
20.1 严格模式
20.2 export命令
20.3 import命令
20.4 模块的整体加载
20.5 module命令
20.6 export default命令
20.7 模块的继承
20.8 ES6模块加载的实质
20.9 循环加载
20.10 ES6模块的转码
第21章 编程风格
21.1 块级作用域
21.2 字符串
21.3 结构赋值
21.4 对象
21.5 数组
21.6 函数
21.7 Map结构
21.8 Class
21.9 模块
21.10 ESLint的使用
第22章 读懂ECMAScript规格
21.1 概述
21.2 相等运算符
21.3 数组的空位
21.4 数组的map方法