1. const let 来声明变量 只在块级作用域生效、没有变量提升、暂时性死区、不允许重复声明

  2. 变量的解构赋值

  3. 数值和 Math 对象的扩展

    1. Number.isFinite()Number.isNaN()Number.parseInt()Number.parseFloat()Number.isInteger()Math.sign()
  4. 函数的扩展

    1. 函数参数的默认值
    2. reset 参数
    3. name 属性
    4. 箭头函数
    5. length 返回没有指定默认值的参数个数
  5. 数组的扩展

    1. 扩展运算符
    2. Array.from() 将伪数组转化为数组
    3. 数组实例方法:keys/values/entries/flat/include/find/findIndex/fill
  6. 对象的扩展

    1. 属性的简介表示法,属性名表达式 obj['a' + 'bc'] = 'dd'
    2. 属性的可枚举有四个属性会忽略enumerable为false的属性for in
    3. super关键字指向当前对象的原型对象
    4. 可选链 obj?.prop
    5. null 判断运行符 ?? 类似 || 只有左侧值为null或者undefined时才会返回右侧值
    6. 新增方法isassigngetOwnPropertyDescriptorssetPrototypeOfgetPrototypeOfkeysvaluesentriesfromEntries
  7. symbol 一种新的原始数据类型Symbol,表示独一无二的值

  8. Set,WeakSet,Map,WeakMap,类似数组和对象但是成员都是独一无二的,weak类型成员只能是对象,weakMapkey值只接受objectweak是弱引用

  9. proxy 用于修改某些操作的默认行为,等同在语言层面的修改。可以理解成在目标对象之前设置一层拦截,拦截的操作和 Reflect一一对应

  10. Reflect 是 ES6 为了操作对象提供的新的API

    1. 对一些完全属于语言内部的方法放到Reflect上譬如Object.defineProperty()

    2. 使Object上的方法更加合理譬如Object.defineProperty()定义错误时,使其返回false

    3. 让明显的命令式操作变成函数式delete obj.name —— Reflect.deleteProperty(obj,name) name in obj Reflect.has(obj,name)

    4. Proxy的拦截操作与Reflect上的方法一一对应
      方法有Reflect.apply(Fun,thisArg,arg)、

      Reflect.construct(Fun,args)、 Reflect.get(target,args,reciever)、 Reflect.set(target,args,reciever)、 Reflect.defineProperty(target,name,desc)、 Reflect.has(target,name)、 Reflect.OwnKeys(target)、 Reflect.isExtendsible()、 Reflect.preventExtensions()、 Reflect.getOwnPropertyDescriptor()、 Reflect.getPrototypeOf()、 Reflect.setPrototypeOf()

  11. Promise——是异步编程的一种解决方案。promise对象的异步操作有三种状态,pendingfulfilledrejected。只有异步操作的结果能决定操作处于哪个状态,状态一经改变,就不会再变

  12. Iterator(遍历器)

    1. 为各种数据结构,提供一个统一简便的访问接口
    2. 使得数据结构的成员能够按照某种次序排序
    3. ES6提供一种新的遍历命令for ... of, Iterator接口主要给for ...of消费
    4. 默认的Iterator接口部署在数据结构的Symbol.iterator上,Symbol.iterator属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数会返回一个遍历器。至于属性名Symbol.iterator是一个表达式,返回Symbol对象的iterator属性,这是一个预定好的类型为Symbol的特殊值。
  13. Generator函数可以有多种理解的角度。语法上,首先可以理解为一个状态机,封装了多个内部状态。执行Generator函数,会返回一个遍历器对象,也就是说Generator除了状态机还是一个遍历器对象生成函数,生成的遍历器对象可以依次遍历Generator函数内部的每一个状态

  14. Generator函数的异步应用:Generator函数就是异步操作的容器,它的自动执行需要一种机制,当异步有了结果能自动交回执行权。

    1. 回调函数。将异步操作包装成Thunk函数,在回调函数里交回执行权

    2. Promise对象。将异步操作包装成promise对象在then方法里交回执行权

      co模块就是用于Generator函数的自动执行,它其实就是将两种自动执行器(Thunk函数和promise对象)包装成一个模块。co模块的执行需要Generator函数yield命令后面只能是Thunk函数和promise对象

  15. class

    1. 静态属性static指的是class的本身属性即class.prop,而不是实例对象(this)的属性。共有属性public(默认不写是这个)可以在实例中访问,
    2. 私有方法和属性只有在类内部访问的方法和属性,可以通过Symbol来实现
    3. class方法可以通过extends来继承,可以通过Object.getPrototypeOf()来查看,constructor中都有super代表父类的构造函数用来新建父类的this对象.class在super调用前没有this对象,因为子类自己的this对象必须通过父类的构造函数完成塑造,得到与父类同样的实例属性和方法然后再加上自己的实例和方法(子类super把props方法传递给父类Component,Component把props挂载到它的实例属性上)
    4. 原生构造函数指的是语言内置的构造函数譬如Array、Boolean、String、Date、Error、Number、Function、Object、RegExp这些原生构造函数是无法继承的