JavaScriptのプロトタイプチェインをちゃんと理解する
プロトタイプチェーンって何? という質問に答えられますか? 今回はJavaScriptを理解するうえで重要なプロトタイプチェーンという概念についてお話しします。
前回までのおさらいと今回のあらすじ
前回まで、JavaScriptでオブジェクト指向を行う方法についてお話ししてきました。コンストラクタやthisオブジェクトなど、様々なことについてお話ししてきましたが、その中でも重要なのはプロトタイプという概念です。
プロトタイプについては前々回お話ししました。その内容を簡潔に表すと、「オブジェクトのメンバは、『オブジェクト自身→プロトタイプ』と言う順序で検索される」ということでした。
しかし、この話にはまだ先があります。それが「プロトタイプチェイン」と言う概念です。
「プロトタイプチェイン」は、JavaScriptプログラムの動作を理解する上ではある意味中核ともいえる概念で、またとても面白いところでもあります。
プロトタイプチェインとは?
いきなりですが、プロトタイプってそもそも何なのでしょう?
前々回もお伝えしたとおり、「オブジェクト自身→プロトタイプ」の順序でメンバが検索されるとのことですが、改めてこの問いについて考えてみたいと思います。
とりあえず、プロトタイプをalertで表示させてみるとしましょう。
// Personのコンストラクタ
function Person() {
}
alert(Person.prototype);
すると結果は以下のようになります。
プロトタイプをalert表示
ここで、ひとつ「アレ?」と思いませんか?
「オブジェクトのメンバは、『オブジェクト自身にそのメンバがあるか→プロトタイプにそのメンバがあるか』の順序で検索される」んでしたよね。そして、プロトタイプはオブジェクトです。と言うことは・・・
「オブジェクト→プロトタイプ」と言うメンバ検索の連鎖が、無限に終わらないように思えませんか?(もちろん実際には、無限に続くわけはありません。連鎖の終了条件については次のページで解説します)
とりあえず、「プロトタイプチェイン」という言葉の意味はこれで説明できます。
「チェイン」と言う言葉を辞書で調べてみると、「鎖、連鎖」と言う意味です。先ほど示した連鎖のことを表している言葉なのです。
- 特集: JavaScriptのイロハ (19件)
- 4日前のトップ記事
- 5日前
- 6日前
- 7日前
- 8日前
- ホワイトペーパー
- 話題のタグ
MS運営のオープンソース開発プロジェクト支援サイト「CodePlex」を探検する(2)
Snow LeopardではNTFSをサポート--その源流を訪ねる(1)
フォトレポート:「Windows Server 2008 R2」--あまり知られていない有用な機能10選
マイクロソフト、「Office 2010」ベータ版を開発者向けにリリース
大丈夫?あなたの会社のセキュリティ対策
―エン・ジャパン厳選求人☆毎週更新―
100万円で実現!中小企業の情報漏えい対策
【最終警告】パンデミック対策特集
企業ITシステムの企画、構築、運用のイロハ
電力に"ふた"をする独自の省エネ機能とは!?
高まるiSCSIストレージへの注目度