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

白石俊平
2008/03/04 18:30

いよいよJavaScriptのオブジェクト指向機能についてです。筆者が抱いていたありがちな誤解を紹介しながら、そのさわりをお話ししましょう。

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

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

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

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

JavaScriptのコンストラクタ

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

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

function Person() {
}

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

var person = new Person();

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

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

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

記事に関係する情報をコメントでお寄せください

ニックネーム : CNET_IDにログインしてコメントする

コメント本文(必須) :
  • 今日のトップ記事
  • 昨日
  • 2日前
  • 3日前
  • 4日前
  • 新着記事
  • 人気記事
  • 特集
  • ブログ