ホームページ > 記事 > ウェブフロントエンド > js プロトタイプ チェーンは何で構成されていますか?相続においてそれはどのような役割を果たしますか?
次の図と簡単な例を組み合わせると、コンストラクター、プロトタイプ オブジェクト、インスタンス オブジェクトの関係をまず理解できます。まず、この簡単な説明図を見てみましょう。
この図は、コンストラクター、プロトタイプオブジェクト、およびインスタンスオブジェクトの間の関係を説明しています: そして、プロトタイプチェーンは基本的にこれら 3 つの間の関係に基づいています
上の図から、それぞれが各コンストラクターにはプロトタイプ オブジェクト (プロトタイプ) があり、プロトタイプ オブジェクトにはコンストラクター自体を指すポインターがあります。ただし、プロトタイプ属性は関数内にのみ存在し、プロトタイプ属性はオブジェクト内には存在しません。 _proto_ 属性はすべてのオブジェクトに存在します
以下は、それらの間の関係を示す例です
最初に A のコンストラクターを定義し、次にインスタンス オブジェクト a を新規に定義します
1.A.prototype はprototype オブジェクトを表します
2 つの属性コンストラクターと _proto_2.A.prototype.constructor===プロトタイプ オブジェクト
属性コンストラクター属性はコンストラクター自体に対応します3.A.prototype== =a.__proto__ 上の図からわかるように、インスタンス オブジェクトの _proto_ 属性はプロトタイプ オブジェクトを指します
4.a.__proto__===A.prototype インスタンス オブジェクト a の _proto_ 属性はプロトタイプ オブジェクトを指しますオブジェクト 5.a インスタンス オブジェクト a は共通の属性 _proto_ 上の図とこの簡単な例を組み合わせると、3 つの関係を理解できます これらの関係を中心に JS プロトタイプ チェーンがどのように展開されるかについて話しましょう。まずは写真を見てくださいこの写真は最初の写真とあまり変わりませんが、プロトタイプのチェーンチェーンを探すプロセスを表しています
次に、例を使用して説明します。この写真を組み合わせてください。 Case で考えると理解しやすいですインスタンスオブジェクト a とプロトタイプオブジェクトの両方に name 属性を追加しました。 a.name を出力すると、結果は 111 になります。
しかし、インスタンスオブジェクト a の name 属性を削除して a.name を読み取ると、結果は 222 になります。 これは、検索で a オブジェクトに name 属性が見つからない場合、A に name 属性が見つかるため、a のプロトタイプ (a.__proto__) から検索するためです。プロトタイプの場合、結果は 222 です。 ここで、A.prototype に name 属性が見つからない場合、A.prototype もオブジェクトであり、_proto_ 属性があるため、したがって、A.prototype プロトタイプのプロトタイプは A.prototype._proto_したがって、A.prototype.__proto__===Object.prototype は true です
A.prototype のプロトタイプは Object.prototype であるため、上の例から Object.prototype._proto_ のプロトタイプは null であることがわかります
注: null は特別な値ですが、その型はオブジェクトですが属性がないため、プロトタイプは存在しません。null が見つかると、プロトタイプ チェーンは終了します
したがって、プロトタイプ チェーンは - -A.prototype--Object.prototype--null は上の青いプロセス行です 上記の操作と説明でプロトタイプチェーンのプロセスと操作を理解できますが、適用する際にはまだやるべきことがたくさんあります。それをコード設計に反映します
継承は OO 言語の 1 つです。多くの OO 言語は、インターフェース継承
と実装継承 という 2 つの継承メソッドをサポートしています。一方、実装の継承は実際のシグネチャを継承します。 js のメソッドには署名がないため、ECMAScript の実装インターフェースでは使用できません。ECMAScript は実装の継承のみをサポートしており、その は主に 实现继承
に依存することで実現されます。 JavaScript の継承とプロトタイプ チェーン
JS の継承 -- プロトタイプ チェーンの継承とクラスの継承
以上がjs プロトタイプ チェーンは何で構成されていますか?相続においてそれはどのような役割を果たしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。