ECMAScript 2015

  • 概述:
    1.解决原由语法上的一些不足和问题
    2.对原由语法进行增强
    3.增加了全新的对象、方法、功能
    3.全新的数据类型和数据结构
  • const、let 没有变量提升;const 是只读的不能再重新赋值
  • 模板字符串的标签:就是一个特殊的函数,可以用来实现模板引擎,模板字符串中可以识别书写的空格
  • 对象字面量:方括号里面的执行结果作为对象属性名
  • Object.assign可传入任意参数,第一个为目标对象,返回值就是目标对象,三等号为true
  • proxy 可以通过set get 方法监听对象属性赋值和读取> 与 definedProperty 对比:definedProperty只能监听读写,但是proxy可以监听多种操作> proxy还可以监视数组
  • Proxy 和 defineProperty的区别
    • defineProperty:只能监视属性的读写
    • Proxy :
      1.能监视到更多的对象操作,例如:delete操作、对象的方法的调用等。
      2.更好的支持数组对象的监视
      3.proxy是以非侵入的方式监管了对象的读写
  • reflect:reflect内部封装了一系列对对象的底层操作;统⼀的对象操作 API
  • map和对象类似,对象的键值只能是字符串和Symbol,map的键值可以是任意类型
  • Symbol可以用来模拟对象的私有成员。为对象添加一个独一无二的属性,因为每次新建Symbol都不一样。Symbol.for(‘’)只要传入的字符串相等,生成的Symbol对象就一样

    • 示例
      const personProxy = new Proxy(person, {
      get (target, property) {
      console.log(target, property)
      return target[property]
      }
      })
      console.log(personProxy.name)
      Symbol.for(‘1’) === Symbol.for(1) // true
      const obj = {
      [Symbol.toStringTag]: ‘XObject’,
      [Symbol]: ‘Symbol value’
      }
      obj.toString() // [object XObject]
      // 这样才能获取到Symbol类型的属性,Object.keys只能获取字符串类型的属性名
      Object.getOwnPropertySymbols(obj)

      ECMAScript 2016

  • 新增数组includes方法,可以判断是否有NaN,indexOf却不行

  • 新增指数运算符 **

    • 例如:2 ** 2 // 2的2次幂

      ECMAScript 2017

  • Object.values返回对象中所有值

  • Object.entries数组形式返回对象所有键值对。可以直接for of循环;可以将一个对象转换成map类型
  • Object.getOwnPropertyDescriptor用Object.assign复制的时候可以获取完整描述,配合get set方法使用