相続と閉包

1741 ワード

引き継ぐ
  • 継承とは、オブジェクトが直接に他のオブジェクトを使用する属性と方法をいう.
  • 継承方式一
  • //                          
        Son.prototype = new Father();
    
  • 継承方式の2つのオブジェクトの偽名:call、appy方式
  • スコープ
  • 作用領域ECMAScript 6の前のJavaScriptは文ブロック作用領域がありません.逆に、ステートメントブロックに宣言されている変数は、ステートメントブロックのコードセグメントの局所変数となります.例えば、以下のコードは、if文ブロックではなく、xのスコープがxの関数(または大域範囲)を宣言しているので、コンソールで出力される.
  • グローバル変数、局所変数は、現在のドキュメントの他のコードによってアクセスできるので、すべての関数以外で宣言されている変数を大域変数と呼びます.関数内部で宣言されている変数は、ローカル変数と呼ばれます.
  • 作用分域チェーンの現在のコードは環境で実行されると、実行環境におけるアクセス権限を保証するための作用ドメインチェーンを形成します.作用チェーンでは、まず現在の役割の中で探します.見つけたら使用します.見つけられなかったら、対応する上層部に探しに行きます.
    昇進を宣言する
    変数(関数)アップグレード:プログラムが実行される前に、すべてのコードが検出されます.キーワードvarに会ったら、対応変数が存在することを示します.メモリに一定の領域を割り当てます.
      console.log(num);   //  ,      
      //  
      console.log(c);
    
      var c;
      c = 10;
      console.log(c);
    
    包みを閉じる
  • クローズドの概念:クローズドとは、このスコープによって閉じられた変数、関数、またはクローズドなどを呼び出すことができる関数を含みます.通常は、クローズドに対応する関数によって、クローズドへのアクセスを得る.
     //                 
    function fun5() {
      var a = 100;
      return function() {
        return ++a;
      }
    }
    var result = fun5();
    console.log(result());   //101
    console.log(result());   //102
    console.log(result());   //103
    
  • クローズドは、大量のグローバル汚染を防ぐことができますが、特定のタスクのためにクローズドが必要でない場合、他の関数で関数を作成するのは賢明ではありません.なぜなら、クローズドはシナリオ性能に悪影響を及ぼし、処理速度とメモリ消費を含むからです.
  • ES 6文法のクラスと継承
  • クラスのキーワード:定義クラス
  • constructorキーワード:構造関数
  • staticキーワードを用いて、1つのクラスの静的方法を定義する
  • .
  • extensキーワード:
  • の継承を実現する.
  • スーパー呼び出し
  • //–––––––––––––––   extends  ––––––––––––
        class Son extends Father {
          speak() {
            super.speak();
            alert(this.name + '   ');
          }
        }
        let s = new Son('xiaoming',22);
        s.speak();