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に継承を実装することができました。