文字列JavaScriptはプロトタイプベースのオブジェクト指向言語です。これは、クラスという概念がなく、オブジェクトをベースにした継承が行われるということを意味します。すべてのオブジェクトはプロトタイプを持ち、そのプロトタイプを元にして新しいオブジェクトを作成することができます。外部リンクオブジェクトとは[編集]JavaScriptは、プロトタイプベースのオブジェクト指向プログラミング言語です。他の多くの言語で連想配列やハッシュテーブルと呼ばれるもので重複しないキー(典型的には文字列)とそれに一対一に対応する値の対(プロパティ)を保持します。JavaScriptのオブジェクトは、プロパティとメソッドを持ちます。プロパティとは、オブジェクトが持つ値のことであり、メソッドとは、オブジェクトが持つ関数のことです。プロパティとメソッドは、ドット.を使ってアクセスできます。JavaScriptのオブジェクトには、プロトタイプという特別なプロパティがあります。プロトタイプは、新しいオブジェクトが作成されたときに、そのオブジェクトが継承する元となるオブジェクトです。オブジェクトが持つプロパティやメソッドが見つからなかった場合、JavaScriptはそのオブジェクトのプロトタイプを探し、そこで定義されているプロパティやメソッドを使います。このように、プロトタイプを辿って継承することをプロトタイプチェーンと呼びます。JavaScriptのオブジェクト階層のRootには、Objectオブジェクトが位置しています。すべてのオブジェクトは、Objectオブジェクトを継承しているため、Objectオブジェクトのメソッドやプロパティを使用することができます。以下は、オブジェクトのプロトタイプを使った継承の例です。studentオブジェクトのenrollメソッドを呼び出しstudent.enroll('Math');この例では、personPrototypeオブジェクトとstudentPrototypeオブジェクトを定義しています。personPrototypeオブジェクトには、introduceメソッドが定義されています。studentPrototypeオブジェクトはpersonPrototypeオブジェクトを継承し、enrollメソッドを定義しています。次に、personオブジェクトとstudentオブジェクトを作成しています。personオブジェクトはpersonPrototypeオブジェクトを継承しています。studentオブジェクトはstudentPrototypeオブジェクトを継承しています。それぞれ、nameとageプロパティを設定しています。最後に、introduceメソッドとenrollメソッドを呼び出しています。personオブジェクトはpersonPrototypeオブジェクトのintroduceメソッドを呼び出し、studentオブジェクトはstudentPrototypeオブジェクトのenrollメソッドを呼び出しています。プロトタイプチェイン[編集]JavaScriptのオブジェクトは、プロトタイプベースのオブジェクト指向言語であり、プロトタイプチェインを使った継承が可能です。すべてのオブジェクトは、Objectオブジェクトを継承しているため、Objectオブジェクトのメソッドやプロパティを使用することができます。以下はJavaScriptのプロトタイプチェインを図示したものです。親となるオブジェクトを参照しています。参照するオブジェクトのプロパティを順に探索していくことができます。このようにして、オブジェクトの親となるオブジェクトの親となるオブジェクト、といったように、オブジェクトのプロトタイプチェインを辿ることができます。