JavaScriptのプロトタイプチェインをちゃんと理解する
プロトタイプチェーンって何? という質問に答えられますか? 今回はJavaScriptを理解するうえで重要なプロトタイプチェーンという概念についてお話しします。
前回までのおさらいと今回のあらすじ
前回まで、JavaScriptでオブジェクト指向を行う方法についてお話ししてきました。コンストラクタやthisオブジェクトなど、様々なことについてお話ししてきましたが、その中でも重要なのはプロトタイプという概念です。
プロトタイプについては前々回お話ししました。その内容を簡潔に表すと、「オブジェクトのメンバは、『オブジェクト自身→プロトタイプ』と言う順序で検索される」ということでした。
しかし、この話にはまだ先があります。それが「プロトタイプチェイン」と言う概念です。
「プロトタイプチェイン」は、JavaScriptプログラムの動作を理解する上ではある意味中核ともいえる概念で、またとても面白いところでもあります。
プロトタイプチェインとは?
いきなりですが、プロトタイプってそもそも何なのでしょう?
前々回もお伝えしたとおり、「オブジェクト自身→プロトタイプ」の順序でメンバが検索されるとのことですが、改めてこの問いについて考えてみたいと思います。
とりあえず、プロトタイプをalertで表示させてみるとしましょう。
// Personのコンストラクタ
function Person() {
}
alert(Person.prototype);
すると結果は以下のようになります。
プロトタイプをalert表示
なるほど、プロトタイプはオブジェクトのようです。
ここで、ひとつ「アレ?」と思いませんか?
「オブジェクトのメンバは、『オブジェクト自身にそのメンバがあるか→プロトタイプにそのメンバがあるか』の順序で検索される」んでしたよね。そして、プロトタイプはオブジェクトです。と言うことは・・・
オブジェクト → プロトタイプ=オブジェクト → プロトタイプ=オブジェクト・・・
「オブジェクト→プロトタイプ」と言うメンバ検索の連鎖が、無限に終わらないように思えませんか?(もちろん実際には、無限に続くわけはありません。連鎖の終了条件については次のページで解説します)
とりあえず、「プロトタイプチェイン」という言葉の意味はこれで説明できます。
「チェイン」と言う言葉を辞書で調べてみると、「鎖、連鎖」と言う意味です。先ほど示した連鎖のことを表している言葉なのです。
- 特集: JavaScriptのイロハ (16件)
6月18日(水)開催。無料でご参加いただけます(事前登録が必要です)。
- 2日前のトップ記事
- 3日前
- 4日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
MSもアドビも学生さんに開発ソフトを無償提供
「Economist」のトップページがリニューアル
あなたがプログラムを理解できない10の理由:第2回
新APIまもなく登場--Google Developer Day 2008の見所とは?
仮想化によるコスト削減を見える化:オンラインTCOカリキュレータ
Firefox 3が対応したdisplayプロパティの値(2)
リスティング広告における競争優位性の維持
内部統制対策を実現するIT運用管理ツール
-Simplify IT- ITをシンプルに 連載第2回