構造関数、プロトタイプと継承

8018 ワード

  • element.insertAdjacentHTML(position、text)
  • は、文字列内のラベル
  • を読み取ることができる.
    オブジェクトの作成方法
  • 字面量作成
  • 構築関数new Object()
  • カスタムコンストラクタ
  • 1、構造関数と原型
  • 宣言式関数の使用方法は、構造関数として決定されますか?それとも普通関数として決定されますか?
  • newによって使用される宣言式関数構造関数
  • new実行時にする四つのこと
  • は、メモリ内に新たな空きオブジェクトを作成する.
  • は、この新しいオブジェクトをthisに向ける.
  • は、構造関数内のコードを実行し、この新しいオブジェクトに属性と方法を追加します.
  • はこの新しいオブジェクトを返します.だから、コンストラクタにはreturnは必要ありません.
  • 2、構造関数と原型

  • コンストラクタは、オブジェクトを初期化するために主に使用される特殊な関数であり、オブジェクトのメンバ変数に初期値を割り当て、常にnewと一緒に使用されます.
  • new実行時にする4つのこと
  • メモリ空間に空間を開く
  • は、この空間をthisに指し示す
  • である.
  • は、構造関数内のコードを実行し、新しいオブジェクトに属性と方法を追加します.
  • は、このオブジェクト
  • を返します.
    3、コンストラクタプロトタイプ
  • プロトタイプオブジェクトは属性であり、構造関数の属性であり、プロトタイプはプロトタイプオブジェクト
  • とも呼ばれています.
  • 機能:共有方法、省メモリ
  • 4、対象プロトタイププロト
  • 読み取り専用属性
  • 各オブジェクトにはプロトタイプがあります.役割はプロトタイプを指します.
    5、constructor構造関数
  • の主要な役割は、元の構造関数
    //            
    //                ,        
    
  • に戻ることを指すことができる.
    6、プロトタイプチェーン
  • 役割:メンバー検索メカニズムを提供するか、ルールを検索するか
  • の各構造関数にはプロトタイプオブジェクトという属性があり、プロトタイプオブジェクトに方法を置くと、new構造関数はインスタンスオブジェクトを生成でき、インスタンスオブジェクトはプロトタイプがあり、プロトタイプオブジェクトはコンストラクタを通してコンストラクタを指すことができ、プロトタイプオブジェクトはプロトタイプによって前のレベルのプロトタイプオブジェクトを見つけることができます.一番大きいのはObjectの原型の対象で、上に行くとnull
  • です.
  • は、一つのオブジェクトの属性(方法を含む)にアクセスする際、まず、このオブジェクト自体に属性があるかどうかを検索する.もしなかったらその原型を調べます.まだ原型オブジェクトの原型(Objectの原型オブジェクト)を探していません.この類推でObjectまで探しています.__プロト.オブジェクトプロトタイプの意味は、オブジェクトのメンバー検索メカニズムに方向を提供するか、またはルートを提供することです.
  • 7、内蔵オブジェクトの拡張
    元のオブジェクトを元のオブジェクトに拡張してカスタマイズすることができます.たとえば、配列に偶数の和を求める機能を追加します.
  • 配列の合計と
  • は最大値の
  • を求めます.
  • 最小値
  • var arr = [1, 2, 3];
    var arr1 = [23, 2, 5];
    Array.prototype.sum = function (arr) {
      var sum = 0;
      arr.forEach(function (element, index) {
        sum += element;
      });
      return sum;
    };
    
    console.log(arr.sum);
    console.log(arr.sum(arr));
    console.log(arr1.sum(arr1));
    console.log(Array.prototype);
    
    8、継承する
    ES 6はこれまで我々にextensの継承を提供していませんでした.継承は構造関数+プロトタイプオブジェクトシミュレーションにより実現でき,組合せ継承と呼ばれている.
  • 属性継承
  • function Father(uname, age) {
      this.uname = uname;
      this.age = age;
    }
    function Son(uname, age, score) {
      Father.call(this, uname, age);
      this.score = score;
    }
    
    var obj = new Son('son', 18, 99);
    console.log(obj)
    console.log(obj.score);
    console.log(obj.uname);
    
  • コール()
  • は、この関数を呼び出し、関数の実行時のthisの指向性を変更する
  • .
    fun.call(thisArg,arg 1,arg 2,…)
  • callは、親類のthisをサブクラス
  • に向ける.
  • thisArg:現在の呼び出し関数thisの指向性オブジェクト
  • arg 1、arg 2:転送される他のパラメータ