[JS]プロトタイプ
プロトタイプ
継承とプロトタイプ
プロトタイプとは?
プロトタイプは、オブジェクトの親として機能するオブジェクトです.
継承とは?
オブジェクトのオブジェクトを指すpropertyまたはメソッドは、他のオブジェクトで使用できます.
JavaScriptはプロトコルタイプに基づいて継承を実現します.
オブジェクトの親オブジェクトとして、他のオブジェクトに共有構成を提供します.
👉 不要な重複データを排除し、既存のコードを再使用して開発コストを削減
プロトタイプオブジェクト
プロトタイプとコンストラクション関数、インスタンス関係
コンストラクション関数によって生成されるインスタンスは、コンストラクション関数のプロトタイプを指します.
すべてのプロトタイプはコンストラクション関数に接続されています.
すべてのオブジェクトにプロトタイプがあります[[Prototype]]
内部スロット:オブジェクト作成によりプロトタイプが決定された参照を格納するprototype
property:コンストラクション関数にのみ存在します.作成するオブジェクトにタイプを割り当てるconstructor
property:すべてのprototypeに存在します.コンストラクション関数を指します.コンストラクション関数の作成時に接続__proto__
ビジタープロパティ:すべてのオブジェクトに存在します.プロトタイプ内部スロットへの間接アクセス
プロトタイプ作成時点
プロトタイプは,サブ関数を生成しながら生成される.
カスタムジェネレータ関数とプロトタイプ
コンストラクション関数とともに作成されたプロトタイプには、コンストラクション関数のみがあります.
生成されたプロトタイプのプロトタイプは常にオブジェクトです.原型です.
コンストラクタ関数とプロトタイプ
コンストラクション関数の作成時にプロトタイプを作成します.グローバルオブジェクトの作成時にすべてのコンストラクタ関数を作成する
文字記号で作成されたオブジェクトのコンストラクション関数とプロトタイプ
オブジェクトテキストを評価してオブジェクトを作成する場合は、抽象演算OrdinaryObjectを呼び出してオブジェクトを作成します.プロトタイプがプロトタイプの空のオブジェクトを生成します.
Object.構成タイプを明示的に指定してオブジェクトを作成する
let newObject=Object.create(null);
// 객체의 프로토타입이 null임
// 이는 프로토타입 체인 종점에 위치한다는 것과 같다.
最初のパラメータに新しく作成したオブジェクトのプロトタイプを指定します.2番目のパラメータには、作成するオブジェクトのpropertyキーと、propertyディスク立棒オブジェクトからなるオブジェクトを含めることができます.
👉 長所
新しい演算子
let newObject=Object.create(null);
// 객체의 프로토타입이 null임
// 이는 프로토타입 체인 종점에 위치한다는 것과 같다.
オブジェクト文字は、オブジェクト
ただし、推奨しない
👉 プロトタイプチェーンの終点にあるオブジェクトがオブジェクトです.Prototypeの方法は使えないから!
プロトタイプチェーン
静的メソッドvsプロトタイプメソッド
メソッドの位置はメソッドの内部にあり、thisでインスタンスを参照する必要がある場合はプロトタイプの内部にあり、thisが必要でない場合はジェネレータの内部にあります.
REF
モダンJavaScript Deep Dive(本)
PoiemaWeb - function
Reference
この問題について([JS]プロトタイプ), 我々は、より多くの情報をここで見つけました https://velog.io/@ktmihs/JS-prototypeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol