継承機構のJavaScript実装によるプロトタイプチェーンの詳細解説_JavaScriptスキル
プロトタイプを使用して前の例のクラスを再定義すると、次の形式になります:
function ClassA() {
}
ClassA.prototype.color = "blue";
ClassA.prototype.sayColor = function () {
alert(this.color);
};
関数 ClassB() {
}
ClassB.prototype = new ClassA();
プロトタイプ アプローチの魔法は、コードの最後の行にあります。ここでは、ClassB のプロトタイプ プロパティを ClassA のインスタンスに設定します。これは興味深いものです。ClassA のすべてのプロパティとメソッドが必要ですが、それらを ClassB のプロトタイプ プロパティに 1 つずつ追加したくないからです。 ClassA のインスタンスをプロトタイプ プロパティに割り当てるより良い方法はありますか?
注: パラメータを渡さずに ClassA のコンストラクターを呼び出します。これはプロトタイプチェーンにおける標準的な慣行です。コンストラクターにパラメーターがないことを確認してください。
オブジェクトの偽装と同様に、サブクラスのすべてのプロパティとメソッドは、プロトタイプ プロパティが割り当てられた後に表示される必要があります。これは、プロトタイプ プロパティが割り当てられる前に割り当てられたすべてのメソッドが削除されるためです。なぜ?プロトタイプのプロパティが新しいオブジェクトに置き換えられるため、新しいメソッドが追加された元のオブジェクトは破棄されます。したがって、name 属性と SayName() メソッドを ClassB クラスに追加するコードは次のとおりです。
function ClassB() {
}
ClassB.prototype = new ClassA();
ClassB.prototype.name = "";
ClassB.prototype.sayName = function () {
alert(this.name);
};
はい次の例を実行して、このコードをテストします。
var objA = new ClassA();
var objB = new ClassB();
objA.color = "青";
objB.color = "赤";
objB.name = " John";
objA.sayColor();
objB.sayColor();
objB.sayName();
さらに、プロトタイプ チェーンでは、instanceof 演算子動作も非常にユニークです。 instanceof は、ClassB のすべてのインスタンスについて、ClassA と ClassB の両方に対して true を返します。例:
var objB = new ClassB( );
alert(objBinstanceofClassA); //出力 "true"
alert(objBinstanceofClassB); //出力 "true"
ECMAScript の弱い型付けの世界, これは非常に便利なツールですが、オブジェクトの偽装を使用する場合は使用できません。ただし、サブクラスのプロトタイプが直接再割り当てされるため、次の状況が発生します:
console.log(objB.__proto__===objB.constructor.prototype) //false
ClassB のプロトタイプ チェーンのプロトタイプ属性がオブジェクトによってオーバーライドされたため別のクラスの。出力結果は、objB.__proto__ が objB.constructor.prototype ではなく ClassB.prototype を指していることを示しています。これも分かりやすいですが、オブジェクトリテラルの new ClassA() インスタンスに代入されるのが、オブジェクトリテラルのメソッドで定義されたオブジェクトのコンストラクター(constructor)が、ルートコンストラクターの Object.prototype を指します。空のオブジェクト {}、{} は当然ながら ClassB.prototype とは異なります。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









js のオブジェクトであるプロトタイプは、他のオブジェクトのプロパティとメソッドを定義するために使用されます。各コンストラクターには、プロトタイプ属性があります。この属性は、プロトタイプ オブジェクトを指すポインターです。新しいオブジェクトが作成されると、新しいオブジェクトは次のようになります。コンストラクターのprototype属性はプロパティとメソッドを継承します。プロトタイプ チェーンでは、オブジェクトのプロパティにアクセスしようとすると、js はまずオブジェクトにこのプロパティがあるかどうかを確認します。そうでない場合、js はオブジェクトのプロトタイプを参照します。プロトタイプ オブジェクトにこのプロパティがない場合は、原型の原型を探し続ける。

スコープ チェーンとプロトタイプ チェーンは、JavaScript の 2 つの重要な概念であり、それぞれスコープと継承の 2 つの中核機能に対応します: 1. スコープ チェーンは、JavaScript で変数アクセスとスコープを管理するために使用されるメカニズムです。関数が作成される実行コンテキストと字句スコープ; 2. プロトタイプ チェーンは、JavaScript で継承を実装するためのメカニズムです。オブジェクト間のプロトタイプ関係に基づいて、オブジェクトのプロパティやメソッドにアクセスするとき、オブジェクト自体がそうでない場合は、定義は、プロトタイプ チェーンに沿って検索されます。

プロトタイプとプロトタイプ チェーンの違いは次のとおりです。 1. プロトタイプは、オブジェクト間での属性とメソッドの共有と継承を実現するために使用される、いくつかの共有属性とメソッドを含む各オブジェクトが持つ属性です。一方、プロトタイプ チェーンは継承です。このメカニズムは、オブジェクト間の継承関係を定義するオブジェクト間のプロトタイプ関係を通じて実装され、オブジェクトがプロトタイプ オブジェクトのプロパティとメソッドを共有できるようになります。 2. プロトタイプの機能は、オブジェクトの共有プロパティとメソッドを定義することです。複数のオブジェクトが同じプロトタイプ オブジェクトのプロパティとメソッドを共有できるようにするため、プロトタイプ チェーンの機能はオブジェクト間の継承関係などを実現することです。

プロトタイプとプロトタイプ チェーンが存在する理由は、JavaScript 言語でオブジェクト プロパティの継承と共有を実装するためです。 JavaScript では、関数を含むすべてがオブジェクトです。すべてのオブジェクトには、プロトタイプ オブジェクトと呼ばれる別のオブジェクトを指すプロトタイプと呼ばれるプロパティがあります。オブジェクトはプロトタイプ オブジェクトからプロパティとメソッドを継承できます。プロトタイプを通じて共有プロパティとメソッドを実装する利点は、メモリの節約です。いくつかのプロパティとメソッドを持つオブジェクト A を考えてから、オブジェクト B を作成し、

プロトタイプ チェーンは、簡単に説明すると、プロトタイプで構成されるチェーンです。オブジェクトの属性にアクセスする場合、オブジェクト自体の属性が最初に検索されます。属性が見つからない場合は、その __proto__ 暗黙のプロトタイプ、つまりコンストラクターのプロトタイプが検索されます。さらに、コンストラクターのプロトタイプの __proto__ 内を検索し、階層ごとに上方向に検索することにより、プロトタイプ チェーンと呼ばれるチェーン構造が形成されます。

詳細な分析: オブジェクト指向プログラミングにおけるプロトタイプとプロトタイプ チェーンの役割には、特定のコード サンプルが必要です。オブジェクト指向プログラミング (OOP) では、プロトタイプ (Prototype) とプロトタイプ チェーン (PrototypeChain) は重要な概念です。これらはオブジェクトベースのコード再利用メカニズムを提供し、JavaScript などの言語で重要な役割を果たします。この記事では、プロトタイプとプロトタイプ チェーンの概念を深く掘り下げ、OOP におけるそれらの役割を探り、具体的なコード例で説明します。

プロトタイプとプロトタイプ チェーンの独自の機能を探る JavaScript では、プロトタイプとプロトタイプ チェーンは非常に重要な概念です。プロトタイプとプロトタイプ チェーンの独自の機能を理解することは、JavaScript での継承とオブジェクトの作成をより深く理解するのに役立ちます。プロトタイプは、JavaScript のすべてのオブジェクトが所有するプロパティであり、別のオブジェクトを指し、プロパティとメソッドを共有するために使用されます。すべての JavaScript オブジェクトにはプロトタイプがあります

js プロトタイプとプロトタイプ チェーンの機能は、オブジェクトの継承を実現し、メモリ領域を節約し、コードのパフォーマンスと保守性を向上させることです。詳細な導入: 1. オブジェクトの継承を実装します。プロトタイプとプロトタイプ チェーンを使用すると、オブジェクトを作成し、別のオブジェクトのプロパティとメソッドを継承できます。新しいオブジェクトを作成するときに、そのプロトタイプを別のオブジェクトにポイントできるため、新しいオブジェクト オブジェクトは、プロトタイプ オブジェクトのプロパティとメソッドにアクセスできます; 2. メモリを節約し、パフォーマンスを向上させます。JavaScript では、各オブジェクトにプロトタイプがあります。プロトタイプ チェーンを通じて、オブジェクトはプロトタイプなどを共有できます。
