JavaScript では、プロトタイプは、オブジェクト間の継承と共有プロパティを実装するために使用されるオブジェクトです。JavaScript はプロトタイプベースのプログラミング言語であり、各オブジェクトにはプロトタイプがあり、プロトタイプは独自のプロトタイプを持つことができ、プロトタイプ チェーンを形成します。
これらの概念を 1 つずつ説明しましょう。
-
オブジェクトのプロトタイプ: すべての JavaScript オブジェクト (null および未定義を除く) には、
__proto__
オブジェクトのプロトタイプを参照するプロパティがあります。Object.getPrototypeOf(obj)
オブジェクトのプロトタイプを取得するために使用することもできます。オブジェクト プロトタイプは、オブジェクトの親オブジェクトまたはオブジェクトのコンストラクターのプロトタイプを指します。たとえば、オブジェクトがある場合obj
、そのプロトタイプがobj.__proto__
参照されますobj
。 -
プロトタイプの継承: JavaScript におけるプロトタイプの継承は、オブジェクトのプロトタイプを別のオブジェクトに指すことによって実現されます。オブジェクトのプロパティにアクセスするとき、オブジェクト自体にそのプロパティがない場合、JavaScript は対応するプロパティを持つプロトタイプ オブジェクトが見つかるまでオブジェクトのプロトタイプ チェーンを検索します。これにより、プロトタイプ オブジェクトからプロパティを継承する効果が得られます。プロトタイプ チェーン上にそのプロパティを持つオブジェクトがない場合、プロパティの値は未定義になります。プロトタイプの継承を通じて、メソッドとプロパティを共有し、オブジェクト間の階層関係を実現できます。
-
プロトタイプ チェーン: プロトタイプ チェーンは、一連のオブジェクトで構成されるリンク リスト構造です。各オブジェクトにはプロトタイプがあり、
__proto__
そのプロトタイプにはプロパティを通じてアクセスできます。オブジェクトのプロパティにアクセスすると、JavaScript はまずオブジェクト自体を調べ、見つからない場合は、プロパティが見つかるまで、またはプロトタイプ チェーンの最後 (null) に到達するまでプロトタイプ チェーンを遡っていきます。まだ見つかりません。未定義を返します。これにより、オブジェクト プロトタイプのチェーンが形成されます。
JavaScript におけるプロトタイプ、オブジェクト プロトタイプ、プロトタイプ継承、プロトタイプ チェーンは、オブジェクト指向プログラミングを実現するための重要なメカニズムです。プロトタイプ チェーンを通じて、オブジェクト間の継承と共有プロパティを実現できるため、コードがより効率的かつ柔軟になります。