[JS]プロトタイプ


プロトタイプ


継承とプロトタイプ


プロトタイプとは?


プロトタイプは、オブジェクトの親として機能するオブジェクトです.

継承とは?


オブジェクトのオブジェクトを指すpropertyまたはメソッドは、他のオブジェクトで使用できます.
JavaScriptはプロトコルタイプに基づいて継承を実現します.
オブジェクトの親オブジェクトとして、他のオブジェクトに共有構成を提供します.
👉 不要な重複データを排除し、既存のコードを再使用して開発コストを削減

プロトタイプオブジェクト


プロトタイプとコンストラクション関数、インスタンス関係


コンストラクション関数によって生成されるインスタンスは、コンストラクション関数のプロトタイプを指します.
すべてのプロトタイプはコンストラクション関数に接続されています.

すべてのオブジェクトにプロトタイプがあります[[Prototype]]内部スロット:オブジェクト作成によりプロトタイプが決定された参照を格納するprototype property:コンストラクション関数にのみ存在します.作成するオブジェクトにタイプを割り当てるconstructor property:すべてのprototypeに存在します.コンストラクション関数を指します.コンストラクション関数の作成時に接続__proto__ビジタープロパティ:すべてのオブジェクトに存在します.プロトタイプ内部スロットへの間接アクセス

プロトタイプ作成時点


プロトタイプは,サブ関数を生成しながら生成される.

カスタムジェネレータ関数とプロトタイプ


コンストラクション関数とともに作成されたプロトタイプには、コンストラクション関数のみがあります.
生成されたプロトタイプのプロトタイプは常にオブジェクトです.原型です.

コンストラクタ関数とプロトタイプ


コンストラクション関数の作成時にプロトタイプを作成します.グローバルオブジェクトの作成時にすべてのコンストラクタ関数を作成する

文字記号で作成されたオブジェクトのコンストラクション関数とプロトタイプ


オブジェクトテキストを評価してオブジェクトを作成する場合は、抽象演算OrdinaryObjectを呼び出してオブジェクトを作成します.プロトタイプがプロトタイプの空のオブジェクトを生成します.

Object.構成タイプを明示的に指定してオブジェクトを作成する

let newObject=Object.create(null);
// 객체의 프로토타입이 null임
// 이는 프로토타입 체인 종점에 위치한다는 것과 같다.
最初のパラメータに新しく作成したオブジェクトのプロトタイプを指定します.2番目のパラメータには、作成するオブジェクトのpropertyキーと、propertyディスク立棒オブジェクトからなるオブジェクトを含めることができます.
👉 長所
新しい演算子
  • を必要とせずにオブジェクト
  • を作成できます.
  • プロトタイプを指定することで、オブジェクト
  • を作成できます.
    オブジェクト文字は、オブジェクト
  • を継承することもできる
    ただし、推奨しない
    👉 プロトタイプチェーンの終点にあるオブジェクトがオブジェクトです.Prototypeの方法は使えないから!

    プロトタイプチェーン

  • の内部スロットの参照に従って、親ロールとして機能するプロトコルタイプの基礎情報
  • を順に検索する.
  • jsオブジェクト向けプログラミング継承を実現するメカニズム
  • 静的メソッドvsプロトタイプメソッド


    メソッドの位置はメソッドの内部にあり、thisでインスタンスを参照する必要がある場合はプロトタイプの内部にあり、thisが必要でない場合はジェネレータの内部にあります.

    REF


    モダンJavaScript Deep Dive(本)
    PoiemaWeb - function