【コラム】
前回の記事では、JavaScriptでオブジェクトを定義する記法を紹介した。オブジェクト指向プログラミングの利点のひとつに、プログラムの再利用性の向上が挙げられるだろう。既にあるオブジェクトをそのまま流用したり、用途に合わせて既存のオブジェクトを拡張・再構成したりすることにより、必要な概念や機能をゼロから実装する時間やリスクを低減することができる。JavaScriptでのオブジェクト指向の利点も、この例に洩れない(オブジェクト指向プログラミングそのものに関する解説は、本稿の主旨では無いので、別途書籍等を参考いただきたい)。
また、JavaScriptには、「プロトタイプオブジェクト」という特徴的な概念が存在する(このため、JavaScriptは「プロトタイプベース言語」と表現されることもある)。プロトタイプオブジェクトにより、JavaやC++のようなプログラミング言語とは異なるアプローチで、既存のオブジェクトを流用していく過程を実感できるだろう。プロトタイプオブジェクトは、JavaScriptでのオブジェクト指向プログラミングでは欠かせない概念であるため、今後詳細に紹介していく。
まずは、前回に引き続きJavaScriptでのオブジェクト定義方法を見ていこう。前回の記事で述べた通り、JavaScriptでは、オブジェクトは「プロパティ名とそれに対応づけられた値のペアのリスト」である。オブジェクトが持つメソッドも、前回紹介した、プロパティ名と値のペアをコロン":"で区切る記法により定義することができる。Firebugで次のコマンドを実行し、動作を確認してみよう。連載第1回で紹介した関数リテラルの定義方法(無名関数を特定のプロパティ(変数)名に割り当てる)も思い出していただきたい。
また、オブジェクトの中では、オブジェクトを入れ子に定義することもできる。
オブジェクトでのプロパティ定義方法に加えて、プロパティを削除する方法も確認しておこう。プロパティを削除する方法は delete 演算子を使う方法と、undefined キーワードをセットする方法の2種類がある。両者とも削除という点では似たような振る舞いをするが、削除後のプロパティの扱いに違いがある。次のコマンドを実行して動作を確認しておこう。
これまで、JavaScriptでのオブジェクト定義方法を紹介してきた。実は、JavaScriptで登場するデータは(数値などのプリミティブなデータを除き)、すべてオブジェクトである。また、すべてのオブジェクトは、最上位の親オブジェクトである Object の子オブジェクトとして定義されている。
例3で記述した配列は Array オブジェクトの子オブジェクトとして定義されたものである。オブジェクトの構成(「プロパティ名とそれに対応づけられた値のペアのリスト」であること)を思い出していただければ、delete演算子やundefinedキーワードが何をおこなっているかについて、より理解できるだろう。
function() で定義できるすべての関数もまた Function オブジェクトの子オブジェクトとして定義される、れっきとしたオブジェクトである。例1で述べたオブジェクトに対するメソッド定義は、例2で見たようなオブジェクトを入れ子定義する方法を用いて、Carオブジェクトの内部プロパティとして関数オブジェクトrunを持たせた、に過ぎない。
ところで、他のオブジェクト指向言語をご存知の読者であれば、ここまでの説明に「クラス」という表現が登場していない事にお気付きだろうか。これは、筆者が意識的に使用を控えてきていた表現である。
JavaやC++のようなオブジェクト指向言語においては「クラス」を定義した上で、これを"new"し、インスタンスを生成するのが一般的だろう。しかしながら、誤解を恐れずに言えば、JavaScriptでは(少なくとも現時点では)「クラス」という概念は存在しない。便宜的に"クラスのように利用できるオブジェクト"を定義することはできるが、これは本来の意味でのクラスとは異なるものである(書籍によっては「JavaScriptのクラス」を解説しているものもあるが、便宜的またはインフォーマルな表現として登場しているはずだ)。
「クラスが存在しない」といった事は上記だけでは理解し難い点がある事とおもう。これらを理解するためには、冒頭で述べた「プロトタイプオブジェクト」について理解し、JavaScriptでのオブジェクト指向プログラミングの特徴をしっかりと押さえておく必要がある。これらについて、次回以降、解説していこう。
| 東北ずん子がボーカロイド化クラウドファンディング - 「わたし、気になります」 [15:07 6/20] |
| 世界最速のエンタープライズ向けハードディスク登場 [15:05 6/20] |
| デル、プランニング支援や診断データの可視化を行う新サポートサービス [13:30 6/20] |
| 富士通、サイボウズのグループウェアをSaaSで提供 - 海外展開も [13:00 6/20] |
| フリークアウトとPFIが合弁会社を設立 - アド・ソリューション事業に注力 [11:39 6/20] |
|
疲労回復を促す、運動後に着る機能性ウェアにネオンカラーTシャツ登場 [15:33 6/20] ライフ |
|
ビーズ、自動車に使われる軽量新素材を採用した、国内初省エネ自転車発売 [15:33 6/20] ライフ |
|
宮古島の雪塩を使った「ハウスとんがりコーン 雪塩バター味」発売 [15:33 6/20] ライフ |
|
"夏"を感じる素材が人気!! ストックフォト「PIXTA」、5月の利用動向を発表 [15:23 6/20] クリエイティブ |
|
[西山茉希]出産は「めちゃくちゃ怖い」 早乙女太一の立ち会い希望 [15:14 6/20] エンタメ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。