プロトタイプ
継承とプロトタイプ
プロトタイプはJavaScriptで継承を実現するために作成されます.
function Square(x) {
this.x = x;
this.getArea = function () {
return this.x **2;
};
}
const s1 = new Square(5);
const s2 = new Square(6);
console.log(s1.getArea());//25
console.log(s2.getArea());//36
console.log(s1.getArea === s2.getArea);//false
Squareインスタンスを作成するたびにgetAreaメソッドが作成され、すべてのインスタンスがgetAreaメソッドを繰り返し使用します.これは性能もメモリもよくありません.プロトタイプを使用して、次の変更を行うことができます.
function Square(x) {
this.x = x;
}
Square.prototype.getArea = function () {
return this.x ** 2;
};
const s1 = new Square(5);
const s2 = new Square(6);
console.log(s1.getArea()); //25
console.log(s2.getArea()); //36
console.log(s1.getArea === s2.getArea); //true
Squareコンストラクション関数のプロトタイプにgetAreaメソッドを追加しました.getAreaメソッドは1回のみ作成され、Squareコンストラクション関数のすべてのインスタンスはgetAreaを継承して使用できます.
コンストラクタ、プロトタイプ、オブジェクト
ジェネレータ関数、プロトタイプ、オブジェクトを1つのグループと見なします.JavaScriptでは、ほとんどがオブジェクトです.各オブジェクトにはプロトタイプがあり、各プロトタイプには構造関数があります.
すべてのオブジェクトに[Prototype]という内部スロットがあります.オブジェクトを作成すると、プロトタイプが決定され、スロットに割り当てられます.内部スロットに直接アクセスすることはできませんが、
__proto__
というアクセス者プログラムを使用してプロトコルタイプにアクセスできます.prototypeは、コンストラクション関数propertyを介してコンストラクション関数にアクセスできます.上記のSquareを例にとると、以下のような構成といえる.
Square {
protorype : Square.prototype
}
Square.prototype {
constructor : Square
}
s1 {
[[Prototype]] : Square.prototype을 가리킴(직접 접근불가)
__proto__: Square.prototype
}
直接出力は以下の通りです.function Square(x) {
this.x = x;
}
Square.prototype.getArea = function () {
return this.x ** 2;
};
const s1 = new Square(5);
console.log(s1.__proto__);//{ getArea: [Function (anonymous)] }
console.log(s1.__proto__.constructor);//[Function: Square]
s 1ではprotoの平方を通ります.原型に近づく.Square.prototypeでは、コンストラクション関数を使用してSquareコンストラクション関数にアクセスします.
プロトタイプチェーン
上のprotoは訪問者propertyです.ではprotoはどこから来たのでしょうか.
protoはオブジェクトです.プロトタイプのアクセス者プログラム.
プロトタイプのプロトタイプは常にオブジェクトです.原型です.オブジェクトにアクセスするプロパティがない場合、JavaScriptは[PRODetype]スロットの参照順に親として機能するプロパティを検索します.これを
프로토타입 체인
といいます.上記の例では、検索プロセスは次のようになります.
Reference
この問題について(プロトタイプ), 我々は、より多くの情報をここで見つけました https://velog.io/@qudgus21/프로토타입テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol