JavaScriptのプロトタイプチェインをちゃんと理解する
プロトタイプチェーンって何? という質問に答えられますか? 今回はJavaScriptを理解するうえで重要なプロトタイプチェーンという概念についてお話しします。
前回までのおさらいと今回のあらすじ
前回まで、JavaScriptでオブジェクト指向を行う方法についてお話ししてきました。コンストラクタやthisオブジェクトなど、様々なことについてお話ししてきましたが、その中でも重要なのはプロトタイプという概念です。
プロトタイプについては前々回お話ししました。その内容を簡潔に表すと、「オブジェクトのメンバは、『オブジェクト自身→プロトタイプ』と言う順序で検索される」ということでした。
しかし、この話にはまだ先があります。それが「プロトタイプチェイン」と言う概念です。
「プロトタイプチェイン」は、JavaScriptプログラムの動作を理解する上ではある意味中核ともいえる概念で、またとても面白いところでもあります。
プロトタイプチェインとは?
いきなりですが、プロトタイプってそもそも何なのでしょう?
前々回もお伝えしたとおり、「オブジェクト自身→プロトタイプ」の順序でメンバが検索されるとのことですが、改めてこの問いについて考えてみたいと思います。
とりあえず、プロトタイプをalertで表示させてみるとしましょう。
// Personのコンストラクタ
function Person() {
}
alert(Person.prototype);
すると結果は以下のようになります。
プロトタイプをalert表示
ここで、ひとつ「アレ?」と思いませんか?
「オブジェクトのメンバは、『オブジェクト自身にそのメンバがあるか→プロトタイプにそのメンバがあるか』の順序で検索される」んでしたよね。そして、プロトタイプはオブジェクトです。と言うことは・・・
「オブジェクト→プロトタイプ」と言うメンバ検索の連鎖が、無限に終わらないように思えませんか?(もちろん実際には、無限に続くわけはありません。連鎖の終了条件については次のページで解説します)
とりあえず、「プロトタイプチェイン」という言葉の意味はこれで説明できます。
「チェイン」と言う言葉を辞書で調べてみると、「鎖、連鎖」と言う意味です。先ほど示した連鎖のことを表している言葉なのです。
- 特集: JavaScriptのイロハ (19件)
- ホワイトペーパー
- 話題のタグ
グーグル、JavaScriptプログラミングツールをリリース
Windowsの歴史 Windows Server 2008編:同じカーネルを持つ「Vista」とは対照的に早くから支持を得たサーバOS
Windowsの歴史 Windows Server 2003 R2編:安定性と先進性の両立目指す「R2」の先駆けとなったOS
モジラ、「Firefox 3.6」の第1ベータ版をリリース
―エン・ジャパン厳選求人☆毎週更新―
大丈夫?あなたの会社のセキュリティ対策
100万円で実現!中小企業の情報漏えい対策
最大32個のセンサーが電力を徹底管理!
企業ITシステムの企画、構築、運用のイロハ
【最終警告】パンデミック対策特集
進むストレージ環境の見直し