一 . ECMAScript与JavaScript的关系

        前者是后者的规格 后者是前者的一种实现

二.es6基本操作内容

  1.let变量的特点

        1).块级变量

        2).不存在变量提升

        3).暂时性死区(会造成原有函数的功能失效)

        4).不允许重复声明

2.什么是解构赋值

        从数组和对象中提取值,对变量进行赋值

3.indexof 和 includes 的区别

        indexof (): 可以返回某个指定字符串的值在字符串中首次出现的位置 

        includes():用来判断一个数组是否包含一个指定的值,如果是返回true,如果不是返回false

4.箭头函数使用的注意事项

        1).箭头函数没有自己的this对象

        2).不可以用于构造函数 不能使用new命令,否则会报错

        3).不可以使用arguments对象,该对象在函数体内不存在,如果要用必须用rest参数代替

        4).不可以使用yield命令,不能用作generator函数

5.数组新增的两种方法

1).lis.forEach((v,k)=>{ })
        2).lis.filter((v,k)=>{ })

6.Symbol与Symbol.for的区别

        Symbol : 属性名属于symbol类型的都是独一无二的,可以保证不会和其他属性名发生冲突

        Symbol.for :  Symbol.for赋值,在声明之前如果没有就是独一无二的值,如果有就是相同值

        区别:symbol.for会被登记在全局环境中供搜索,symbol不会

                symbol.for不会每次调用就返回一个新的symbol值,而是会先检查给定的key是否已经存在,如果不存在才会新建一个值

7.Set 和 Map 格式的操作方法

set 类似于数组,但是成员的值都是唯一的,没有重复值

设置set属性构造函数需要用new生成  new set()    

set的操作方法

add(value)        增加
                  delete(value)   删除
                   has(value)      查看
                    clear()          清空
                    size            查看长度

        map的操作方式:

set( )     添加  ==  set.add()
                 get( )     获取
                 size( )    长度
                 delete( )  删除 
                 clear( )   清空

三 . proxy对象

        proxy对象--代理器,是es6新增数据的一种拦截器,就是访问对象前必须走过proxy设置的拦截

        通过构造函数生成:var proxy = new proxy({源对象},{设置拦截规则});

        常用方法  get 获取规则   格式 :
                      

get设置规则   格式 :
 get(target,key){
       // 参数一代表源对象
       // 参数二代表指定的下标
  }

  set设置规则   格式 :
   set(target,key,val){
        // 参数一代表源对象
        // 参数二代表指定下标
        // 参数三代表指定的值
    }

   deleteProperty删除规则  格式 :
       delete 删除对象中的指定属性
       deleteProperty(target,key){
        // 参数一代表源对象
        // 参数二代表指定下标                        
   }

            ps : 需要通过proxy对象调用才会产生效果,proxy对象改变时,源对象会一起改变

四 . Reflect对象

        reflect对象与proxy对象一样,都是ES6为了操作对象而提供的新API

        概述 : 1) 把对象中的方法都设置到reflect中,从reflect中可以拿到语言内部的方法

                  2) 修改对象的返回结果,让其变的更合理,不会终止代码运行

                  3) 统一标准,让操作都变为函数

                  4) reflect与proxy对象的方法时一 一对应的,使用方便

                举例 : console.log( obj.names );    //老

                          console.log( Reflect.get(obj,'' names '') )      //新

五 . promise对象

        promise对象是异步编程的一种解决方案,比传统的解决方案— —回调函数和事件 更合理和更强大。

        1 . 回调地狱

                在前一个异步操作的回调函数中调用后一个一步操作,当异步操作越多,这种嵌套的层级就越复杂 ,就产生了回调地狱

        2.promise生成
             

new Promise( function (resolve,reject ){
       resolve代表成功    reject代表失败
  })
  .then(res=>{
       成功
   })
  .catch(rej=>{
       失败
  })

        3 . promise的三种状态  :pending(进行中)        fulfilled(已成功)        rejected(已失败)

        4 . 方法 : promise.all()        promise.race()

六 . iterator遍历器与for...of循环

        目的 : 为所有的数据结构提供一个统一的访问机制

                  为对象加入iterator遍历器,可以用for...of的方式遍历对象

        ES6规定,默认的iterator接口部署在数据结构的symbol.iterator属性,或者说一个数据结构只要具有symbol.iterator属性,就可以认为是''可遍历的''

        Symbol.iterator属性本身是一个函数,就是当前数据结构默认的遍历器生成函数

七 . generator函数

        generator函数是ES6提供的一种异步编程解决方案,功能让函数内部停止,通过next()与yield配合,实现手动操作函数的运行
        格式 :

function * hellogenerator(){
     yield  'hello';
     yield  'world';
     return 'aaa';
 }

八 . class类

        基本格式 :

class point{
    constructor(x,y){ //构造方法
    this.x = x;
    this.y = y;
  }
}