1 属性的简洁表示法【es6对象中,直接写变量,属性名为变量名,属性值为变量值】
2 方法的简写
3 属性名表达式
4 对象中的扩展运算符
5 疑问: a Object.assign 与 $.extend的区别 Object.assign是es6中提供的方法 $.extend 是jquery提供的方法
Symbol 可以确保 属性的唯一性
Set Map 数据结构 类似java
Proxy 添加访问对象的拦截器
Reflect 增加访问对象的方式 类似于Object
Promise 异步操作的封装
yield 控制函数的运行, 用来暂停和继续一个生成器函数
generator 函数是一个状态机,封装了多个内部状态
执行Generator函数会返回一个遍历器对象,除了状态机,还是一个遍历器对象生成函数
Generator函数有2个特征:a: function关键字与函数名之间一个星号 b: 函数体内使用yield表达式,定义不同的内部状态
Thunk 自动执行Generator函数的一种方式【任何函数,只要参数有回调函数, 就可以写成Thunk函数的形式】
co模块:【Generator是一个异步操作的容器, 自动执行需要一种机制,当异步操作有了结果, 能够自动交回执行权】
async函数 就是 Generator函数的语法糖
async函数就是将Generator函数的星号 * 替换为 async , 将yield替换为await
6 类的修饰 修饰器是一个对类进行处理的函数, 修饰器函数的第一个参数,就是所要修饰的目标类
是在编译阶段执行, 而不是在运行阶段
7 方法的修饰 修饰器的本意是要 修饰 类的实例,但是这个时候实例还没生成,所以只能去修饰原型
8 module [实现模块功能]
es6模块设计的思想尽量静态化, 使得编译时就能确定模块的依赖关系,以及输入和输出的变量
原有的commonJs模块
es6模块加载
9 es6的模块自动采用严格模式,export 命令
export命令可以出现在模块的任何位置, 如果处于块级作用域内,就会报错, 因为处于条件代码块之中,就没法
做静态优化了,违背了es6模块的设计初衷
10 默认输出和正常输出
export default命令用于指定模块的默认输出, 一个模块只能有一个默认输出,因此export default命令只能使用一次
所以 import 命令后面不需要加大括号, 因为只可能唯一对应 export default 命令