Inheritance in JavaScript

継承はオブジェクト指向プログラミングの重要な概念です。 古典的な継承では、基底クラスから派生クラスにメソッドがコピーされます。

JavaScriptでは、継承はプロトタイプオブジェクトを使うことでサポートされています。

これを「プロトタイプ継承」と呼ぶ人もいれば、「ビヘイビアデレゲーション」と呼ぶ人もいます。

プロトタイプオブジェクトを使って、JavaScriptでどのように継承のような機能を実現するか見ていきましょう。

まず、PersonクラスでFirstName & LastNameプロパティを定義します。

上記の例では、FirstName & LastNameプロパティを含むPersonクラス(関数)を定義し、そのプロトタイプオブジェクトにgetFullNameメソッドを追加しています。

次に、StudentクラスでFirstName、LastName、getFullName()メソッドを再定義する必要がないように、Personクラスを継承するStudentクラスを作成したいと思います。 以下は、Personクラスを継承したStudentクラスです。

Student.prototypeに新しく作成されたPersonオブジェクトを設定していることに注意してください。 newキーワードでPersonクラスのオブジェクトを作成し、さらにPerson.prototypeを新しいオブジェクトのプロトタイプオブジェクトに代入し、最後に新しく作成したオブジェクトをStudent.prototypeオブジェクトに代入しています。 オプションとして、Person.prototypeをStudent.prototypeオブジェクトに割り当てることも可能です。

これで、下図のようにPersonのプロパティとメソッドを使用するStudentのオブジェクトを作成することができます。

これでJavaScriptに継承を実装することができました。