ES6覚書

1.凍結されたオブジェクト、Object.freeze() あなたは修正の参照型を防ぐことができます

2. LETのconstがグローバル変数を宣言し、もはやトップを呼び出すことができます

 

アレイのメンバーのみ3. 厳密に等しい不定、デフォルト値を有効にします。   

 

4.Object.setPrototype(OBJ1、OBJ2); OBJ2はOBJ1、OBJ2 OBJ1のプロトタイププロパティを継承しています

 

アレイ:

      1.拡張演算、3つのドット(...);  パラメータのカンマ区切りシーケンスに配列、注場所でのみ()関数は、与えられません

       

      代替方法は、配列パラメータに、適用することができます

       

      あなたは、配列をマージすることができます

      

     文字列は、実際の配列に変換することができます

      

   2. Array.from(OBJ、FN)、実際のアレイに配列データは、メモ:lengthプロパティは以下であってはなりません

   

   返された配列内の各要素を処理するためのマップと同様の第2のパラメータ、処理値を受信します

   

  3.Array.of(N1、N2、...)値のセットは、アレイに結合曲がります

  

  4.arr.find(関数(ヴァル、インデックス、アレイ){// 条件});ヴァル:各値、インデックス:各インデックス、配列:条件に応じて、現在のアレイARR順次の反復は、最初のを返します真の戻り値のメンバー

  

  arr.findIndex(関数(ヴァル、インデックス、アレイ){// }条件)と非常に類似した見つける、戻り値はヴァルではない、真の添字の戻り値の最初のメンバーを返します

  5. arr.fill(n,a,b);   填充数组,用n替换下标a~b(包括a,不包括b)的数组值,如果只有一个参数n,则全部替换

  

 

  6.   arr.entries()     arr.keys()    arr.value()       有异曲同工之处,注,必须是要循环取值中,entries()同时拿到的下标和值,每一个都是数组,用逗号分隔开

 

 7.  arr.includes(n);  n是否存在于arr中,返回一个布尔值

 

对象的扩展:

     1.属性的遍历: for...in

       2.设置原型属性值  Object.setPrototypeOf(obj1,obj2);   设置obj2为obj1的原型属性

             设置之后:可以用关键字super,拿到原型对象属性,

                               也可以用Object.getPrototypeOf(obj1);拿到原型对象所有属性

                                

         3.合并对象,相同属性名,后者会覆盖前者  

          

        4.   Object.is(a,b)  ,比较两个值是否相等,类似于  严格相等运算符 ===

               区别在于:Object.is() 能判断NaN和+0,-0

                

        5.         Object.keys(obj);   返回对象key值,并组成数组;

                    Object.values(obj);   返回对象value值,并组成数组;

                    Object.entries(obj);   返回对象[key,value],并组成数组;

                    Object.formEntries( [ [key1,value1],[key2,value2] ] );   将一个键值对数组转为对象

                     特别注意:不要和array里面keys(),values(),entries()方法搞混,array需要循环

                                

 

 

新增原始数据类型Symbol: 在undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)的基础上新增加了一种

symbol值是通过symbol函数生成,表示独一无二的值;注意:任何两个Symbol总是不相等

       1.创建一个类型Symbol实例,不用new

          为了区分不同Symbol,可接收一个字符串参数表示对 Symbol 实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分;

          可以传入如果描述是一个对象时,则会调用对象里面的toString()方法

        

     2.Symbol.prototype.description实例属性,直接返回描述

      

     3.Symbol 值作为对象属性名时,不能用点运算符。会被排除Object.keys()或者for..in循环之外,JSON.stringify()也会排除Symbol属性

     

    可以通过Object.getOwnPropertySymbols(obj)来获取到属性

    4.可以代替常量,不再为取名字烦恼

     const A = Symbol();  const B = Symbol();  const C = Symbol();

 

Set和Map的数据结构 

1. new Set()   它类似于数组
          可以去重,不会重复添加相同的值;
          
          set()实例有两个属性: Set.prototype.constructor;  Set函数本身
                                               Set.prototype.size;  成员个数
                      4个方法:  add() , delete(), has()  , clear()
                      
                     4个变量循环方法:keys()  values()   entires()  forEach();
                       注意:由于Set只有没有键名,只有键值,所以keys()和values()值是一样的
                      keys()和values()方法可以用 for..of替代
                     

2. new Map();     键值对的集合,和new Set()用法类似,只是含义不一样

  也有 set()  get() delete() has()  几种方法

   

   也可以一次传递一个数组:var m = new Map([
                                                                    ['Michael', 95], ['Bob', 75], ['Tracy', 85]
                                                             ]);
 
 
Promise:简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果
    基本用法: 创建实例
                       

                       调用实例:第一个是成功resolve回调函数,第二个是失败reject回调函数

                       

      1.   Promise.prototype.then();     then()方法返回的是一个新的Promise对象,所以可以链式写法;

      2.   Promise.prototype.catch();   执行失败的方法,一般用catch()方法,不用.then()中第二个失败函数

      3.   Promise.prototype.finally();    总是执行,无论成功和失败

      4.   Promise.all([]);  接收一个数组,数组里面每个参数的属性必须也是promise实例,

            当所有参数的异步操作执行完成后才执行then()回调   Promise.all([]).then();

      5.   Promise.race([]);  接收一个数组,数组里面每个参数的属性必须也是promise实例,

            哪一个参数获取的快,就返回那个结果

      6.  Promise.resolve();  将现有对象转化为Promise对象

           如果参数本身就是Promise对象,则无变化

           如果参数是一个带有then()方法的对象,会将这个对象转化为Promise对象,再立即执行then方法

             

          如果参数不是对象,也没有then()方法,也会转化为Promise对象,但是会立即执行

           

          如果没有参数,直接返回Promise对象的成功状态,会执行then()方法
        

       7.Promise.reject()  和Promise.resolve()一样,区别是,前者返回失败函数,后者是成功函数

 

Generator 函数是状态机,还是一个遍历器对象生成函数:

  特征: 1.function与函数名之间有个星号,2.函数体内部使用yield表达式,定义不同的内部状态

  注意:循环不是一次输出,是分段执行,必须用next()方法,next()方法会返回value和done

  

  yield 后面的表达式,只有当next()指针指向时,才会执行;

  generator函数里面也可以没有yield,就变成暂缓函数,只有next()调用时,才会执行函数里面的内容

  

 

class对象模板,也叫类,完全就是一种新的构造函数声明的方式

  注意点:默认就是use strict严格模式,不会变量提升

 1.使用方法

                 ES5中传统方法                           VS                 ES6中新的方法(语义化更加明显)

                            

 

 在ES6中用class定义一个类,constructor()方法定义一个构造函数,类中定义方法,不再需要加上function,多个方法之间,不需要逗号分隔,不然会报错

 类的数据类型是function,类的本身就是Point.prototype.constructor;

类的方法,也是在原型上,所以可以通过原型添加

 2. constructor()方法: class类默认方法,如果不写,会默认添加上 ,通过new实例化函数时,自动调用    

3.  getter(取值函数) 和 setter(存值函数)     对某个属性设置存值函数和取值函数 

  

 

4.  Class表达式多种写法

      

    立即执行的类:定义时,就直接实例化

        

 6.静态方法:在实例方法前面加上static,表示不会被实例继承,而是直接通过类来调用,如果实例化调用static 方法就会报错

  

Class类的继承:通过extends关键字来实现继承所有属性和方法

   1.在子类中必须在constructor方法中,调用super方法,调用之后才能在子类中使用this,super表示父类的构造函数

     

 

    2.  Object.getPrototypeOf()  来判断子类是否继承了父类

         Object.getPrototypeOf(Son) === Parents  ;   //返回一个布尔值

    3.  关键字super,作为函数时,super()只能用在子类的构造函数之中,用在其他地方就会报错。

                             作为对象时,在普通函数中,指向父类的原型对象,在静态函数中,指向父类,注意调用的区别

                                

                            注意点:在子类的普通方法中调用super,super内部的this指向是子类实例

                                           在子类的静态方法中调用super,super指向父类而不是父类的原型,,super内部的this指向子类,而不是子类的实例

 

 

Module模块化:默认采用严格模式

模块功能主要由两个命令构成:exportimportexport命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能

 1.      export不仅可以输出变量,还有class和函数

        

2. 输出时,可以用as重新改名输出

        

3.import接收,也可以用as改名

 

4. 可以用*号一次接收同一模块中多个方法,然后用as改名,使用时:例下图: all.模块方法名

 

5.  export default命令,不再需要加载的函数名和变量名,默认直接输出,只需要接收就好

  也可以不是匿名函数

 

6. import和export命令只能在模块的顶层,不能在代码块之中,

   但是import()可以;

    按需加载,条件加载,动态模块加载,当加载成功后会作为一个对象,当做then的参数

   

 

 

おすすめ

転載: www.cnblogs.com/fanbulaile/p/11071031.html