8.4注意事項

ES6

  1. ...拡張演算子は、直接使用することなく、関数パラメータに配列を変換することができapplyそれを使用
    割り当てを構造化代入と組み合わせ;
    配列に文字列を変換し、
    それをIterator使用することができる長いがある限りインターフェースが(トラバーサインターフェースを呼び出します)。
  2. Array.from():オブジェクトの場合(配列と同様(つまり、lengthプロパティが必要)、es6の新しいデータ構造とマップセットで構成されるオブジェクトをトラバースできます。Iteratorインターフェイスの展開データ構造が文字列として回転できる限り)転送配列
    は2番目のパラメーターを受け入れ、配列mapメソッドのように機能します
    Array.from(arrayLike, x => x * x);
    // 等同于
    Array.from(arrayLike).map(x => x * x);
    
    Array.from([1, 2, 3], (x) => x * x)
    // [1, 4, 9]
    
  3. 配列メソッドの概要:https//blog.csdn.net/weixin_40693643/article/details/104424800
  4. ES6では、オブジェクトのプロパティおよびメソッドとして、変数と関数を中括弧で直接書き込むことができます。
  5. ES6が追加され、プロパティをObject.assign()無視enumerableしてfalse、オブジェクト自体のコピーのみが属性を列挙できます。
    注:これは浅いコピーです。ネストされたオブジェクトの置換を処理するためのものであり、追加するためのものではありません。
  6. ES6superは、現在のオブジェクトのプロトタイプオブジェクトを指すキーワードを追加しました
  7. ES2020では、チェーンが呼び出された?.
    ときに左側のオブジェクトがnullであるか未定義であるか直接判断する、チェーン判断演算子が導入されています。そうである場合、ダウンしませんが、未定義を返します
  8. ES2020では、??||のように動作するNull判定演算子が導入されていますが、演算子の左側の値がnullまたは未定義の場合にのみ、右側の値が返されます。
  9. Object.is() 2つの値が厳密に等しいかどうかを比較します
    +0 === -0 //true
    NaN === NaN // false
    
    Object.is(+0, -0) // false
    Object.is(NaN, NaN) // true
    
  10. ES2017では、指定されたObject.getOwnPropertyDescriptors()オブジェクトのすべての独自のプロパティ(継承されていないプロパティ)の説明オブジェクトを返すメソッドが導入されました
  11. ES5Object.keysは、オブジェクト自体(継承を除く)が属性キー名をトラバースできるすべてのパラメーターの配列を返すメソッドを
    導入します。ES7は、リサイクルの補足手段をObject.keysサポートObject.valuesObject.entriesてウォークスルーするために導入されましたfor ... of逆演算の
    Object.fromEntries()メソッドObject.entries()は、変換に使用されます。キーと値のペアの配列をオブジェクトに変換し(特にMap構造をオブジェクトに変換するのに適しています)、オブジェクトと
    連携し、URLSearchParamsクエリ文字列をオブジェクトに変換します
  12. ES6では、Symbol一意の値を表すプリミティブデータ型が導入されましたES6標準のシンボルはじめに第3版リーディングノート
  13. ES6はデータ構造を提供しますSet(配列と同様に、メンバーの値は一意です);
    ES6はMap、オブジェクトと同様のデータ構造を提供しますが、さまざまなタイプの値が可能なキーと値のペアのコレクションも提供しますキーとして使用する; ES6標準GettingStarted 3rdEditionリーディングノートセットおよびマップデータ構造
  14. ES6は、インスタンスパラメーター
    var proxy = new Proxy(target, handler);
    new Proxy()生成するためのプロキシインスタンスを生成するために使用されるプロキシコンストラクターをネイティブに提供します:インターセプトされるターゲットオブジェクトパラメーター:インターセプト動作をカスタマイズするために使用されますProxy
    target
    handler
  15. Reflect ES6は、オブジェクトを操作するための新しいAPIを提供します
    • 置くObject(例えば、いくつかの方法Object.definePropertyの)明らかに言語の内部にある対象Reflectオブジェクトを、
    • 一部のObjectメソッドの戻り結果を変更して、より合理的にします。
    • してみましょうObject操作は、機能の動作になり、いくつかのオブジェクトの操作が不可欠です。
    // 老写法
    'assign' in Object // true
    
    // 新写法
    Reflect.has(Object, 'assign') // true
    
    • ReflectProxyオブジェクトのメソッドは、オブジェクトのメソッドに1対1対応します。
  16. ES6はPromise言語標準に書き込まれます; ES6-Promiseオブジェクトの概要
  17. Iteratorトラバーサー、役割:
    • さまざまなデータ構造に統一されたシンプルなアクセスインターフェイスを提供します
    • データ構造のメンバーを特定の順序で配置できるようにする
    • ES6は、新しいトラバーサルコマンドfor ... ofループを作成しましたIteratorインターフェイスは主にfor .. of使用されます。
      for ... ofループはメソッドを呼び出さなくてもGenerator、関数の実行中に生成されたIteratorオブジェクトを自動的にトラバースできますnext
  18. ES6は、非同期プログラミングのソリューションを提供します。Generator
    サンプルコード:
    function* helloWorldGenerator() {
          
          
      yield 'hello';   // 遇到yield,暂停后面的操作,将yield后面表达式的值作为返回的对象的value属性值
      yield 'world';
      return 'ending';
    }
    var hw = helloWorldGenerator();
    // 调用方法
    hw.next()
    // { value: 'hello', done: false }
    hw.next()
    // { value: 'world', done: false }
    hw.next()
    // { value: 'ending', done: true }
    hw.next()
    // { value: undefined, done: true }
    
    Generatorエラー処理コードを関数内にデプロイして、関数外でスローされたエラーをキャプチャできます
    function* gen(x){
          
          
      try {
          
          
        var y = yield x + 2;
      } catch (e){
          
          
        console.log(e);
      }
      return y;
    }
    
    var g = gen(1);
    g.next();
    g.throw('出错了');
    // 出错了
    
    Thunk関数はGenerator関数を自動的に実行する方法です。パラメータにコールバック関数がある限り、任意の関数を関数Thunkの形式で記述できます
    Thunk関数は関数のGenerator自動プロセス管理に使用できます
  19. coモジュールはGenerator関数の自動実行にも使用されます。これにより、Generator関数エグゼキュータを記述できなくなります
    var gen = function* () {
          
          
      var f1 = yield readFile('/etc/fstab');
      var f2 = yield readFile('/etc/shells');
      console.log(f1.toString());
      console.log(f2.toString());
    };
    var co = require('co');
    co(gen);
    
    co(gen).then(function (){
          
          
      console.log('Generator 函数执行完成');
    });
    
  20. ES2017は、導入されたasync。その非同期操作がより便利になるように、関数(シンタックスシュガー・ジェネレータ機能を)アスタリスク機能が交換され置き換えられ;
    Generator*asyncyieldawait
    • 組み込みのエグゼキュータは、Generator関数とは異なり、nextメソッドを呼び出すか、coモジュールを使用する必要があります。
    • 戻り値はPromiseオブジェクトです
  21. ES6ではクラスクラスの概念が導入されています。
    注:クラスとモジュールはデフォルトで厳密モードです。クラスの変数昇格はありません。name属性は常にclassキーワードの直後にクラスの名前を返します。前にアスタリスクを追加した場合メソッド*、それはメソッドがGenerator関数であることを意味します;thisクラス内のデフォルトクラスのインスタンスを指します;
  22. ES6newでは、コマンドのnew.target属性導入されましたこの属性は通常、コンストラクターで使用され、新しいコマンドが作用するコンストラクターを返します。コンストラクターがnewコマンドまたはReflect.construct()によって呼び出されない場合、new.targetはundefinedを返します。
  23. クラス継承:
    • クラスはextendsキーワードを介して継承できます
    • Object.getPrototypeOfメソッドを使用して、サブクラスから親クラスを取得できます(クラスが別のクラスを継承するかどうかを判断できます)
    • superキーワード:関数として呼び出されると、親クラスのコンストラクターを表します(ES6では、サブクラスのコンストラクターがsuper関数を1回実行する必要があります)。オブジェクトとして使用される場合、通常のメソッドでは、のプロトタイプオブジェクトを指します。親クラス。静的メソッドでは、父を指します。

おすすめ

転載: blog.csdn.net/weixin_40693643/article/details/107780461