JavaScriptのオブジェクト指向:コンストラクタに関するありがちな誤解

白石俊平(あゆた)
2008-03-04 18:30:00
  • このエントリーをはてなブックマークに追加

 これのどこが難しいんだ、とお思いかもしれませんが、僕が言いたいのは「new」に続く部分を自作できないと思っていたと言うことです。

 Javaで言えば、newの後にはクラスのコンストラクタが来ます。しかし、JavaScriptにはクラスなんて概念がありません。自分でコンストラクタを作るなんてできないだろう、と。

 つまり、「クラスを作る」、ひいては「オブジェクト指向的なモジュールを作る」と言うのは、JavaScriptを実装したコンテナ(ブラウザなど)に許された特殊な文法であり、僕らプログラマはそうした文法を使用することができないと思っていたのです。

 しかし後に、そうした僕の不満は、全て勉強不足からくる誤解だったことがわかりました。

JavaScriptのコンストラクタ

 new演算子の後に記述する、コンストラクタを作成するのは実に簡単でした。その方法とはズバリ、「関数を定義する」だけだったのです。

 実際に、どういうことか見てみましょう。コンストラクタ「Person」は次のようなコードになります。

function Person() {
}

 そして、このコンストラクタをnew演算子の後に続けて記述し、オブジェクトを作ってみます。

var person = new Person();

 JavaScriptでオブジェクトを作るというのは、たったこれだけのことだったのです。これを初めて知ったときには、あまりにあっけなさ過ぎて拍子抜けしてしまいました。

オブジェクトのメンバは?

 とはいえ、コンストラクタの定義方法がわかっただけでは、まだまだ不十分です。Javaで言えば、フィールドやメソッドを持たないクラスなど、あまり意味がありません。コンストラクタから作成したJavaScriptオブジェクトに、そうしたメンバを持たせることは可能でしょうか?

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]