JavaScriptでは、クラスも関数で表現できます(リスト20)。ここでは、変数Bookに空の関数リテラルを代入することで、クラスの役割を持たせています(1)。試しに、new演算子でBookクラスからインスタンスを生成してみましょう。このインスタンスをinstanceof演算子でチェックすると、Bookクラスのインスタンスであることを確認できます(2)。

リスト20●Bookクラスの定義とインスタンス化
リスト20●Bookクラスの定義とインスタンス化
[画像のクリックで拡大表示]

実用的なコンストラクタを定義する

 インスタンスを生成する際に呼び出される関数がコンストラクタです。Javaなどのクラスベースのオブジェクト指向言語を使ったことがある人にはおなじみの概念ですね。

 先ほどのBook関数は、正確には「クラスを定義するためのコンストラクタ」に相当します。

 もう少し具体的なBookクラスを実現するため、Bookコンストラクタに対し、書名を表す「title」と価格を表す「price」という2つのプロパティ、およびこれらの情報を文字列として出力する「toString」というメソッドを追加してみましょう(リスト21)。

リスト21●Bookコンストラクタにプロパティとメソッドを追加
リスト21●Bookコンストラクタにプロパティとメソッドを追加
[画像のクリックで拡大表示]