JavaScriptのプロトタイプチェインをちゃんと理解する
プロトタイプチェーンって何? という質問に答えられますか? 今回はJavaScriptを理解するうえで重要なプロトタイプチェーンという概念についてお話しします。
前回までのおさらいと今回のあらすじ
前回まで、JavaScriptでオブジェクト指向を行う方法についてお話ししてきました。コンストラクタやthisオブジェクトなど、様々なことについてお話ししてきましたが、その中でも重要なのはプロトタイプという概念です。
プロトタイプについては前々回お話ししました。その内容を簡潔に表すと、「オブジェクトのメンバは、『オブジェクト自身→プロトタイプ』と言う順序で検索される」ということでした。
しかし、この話にはまだ先があります。それが「プロトタイプチェイン」と言う概念です。
「プロトタイプチェイン」は、JavaScriptプログラムの動作を理解する上ではある意味中核ともいえる概念で、またとても面白いところでもあります。
プロトタイプチェインとは?
いきなりですが、プロトタイプってそもそも何なのでしょう?
前々回もお伝えしたとおり、「オブジェクト自身→プロトタイプ」の順序でメンバが検索されるとのことですが、改めてこの問いについて考えてみたいと思います。
とりあえず、プロトタイプをalertで表示させてみるとしましょう。
// Personのコンストラクタ
function Person() {
}
alert(Person.prototype);
すると結果は以下のようになります。
プロトタイプをalert表示
ここで、ひとつ「アレ?」と思いませんか?
「オブジェクトのメンバは、『オブジェクト自身にそのメンバがあるか→プロトタイプにそのメンバがあるか』の順序で検索される」んでしたよね。そして、プロトタイプはオブジェクトです。と言うことは・・・
「オブジェクト→プロトタイプ」と言うメンバ検索の連鎖が、無限に終わらないように思えませんか?(もちろん実際には、無限に続くわけはありません。連鎖の終了条件については次のページで解説します)
とりあえず、「プロトタイプチェイン」という言葉の意味はこれで説明できます。
「チェイン」と言う言葉を辞書で調べてみると、「鎖、連鎖」と言う意味です。先ほど示した連鎖のことを表している言葉なのです。
- 特集: JavaScriptのイロハ (19件)
- ホワイトペーパー
- 企画特集
- 話題のタグ
SQLite対応アプリのデータベースファイルを閲覧する
グーグル、「Google Buzz」を発表--Gmailのソーシャル機能を強化
「H.264」ストリーミングのロイヤリティ無料期間が延長
マイクロソフト、「Office 2010」のRC版をリリース
経営統合後の事業損益構造の見える化を実現
仮想環境のバックアップは難しいのか
利用者の理想を追求した最新レンタルサーバ
レガシーアプリケーションの稼働どうしてる?
新しい視点のレンタルサーバが誕生!
通販サイトのアクセス集中からの危機を救う
御社はまだフリーの転送サービスですか?
身近な業務をCRMが変革!
仮想化をダメにするストレージの実態
事例 VMwareでデータセンターをクラウド化
アンケートから見るセキュリティ対策の実態
Xbox Live インディーズゲーム開発の軌跡
アプリケーション仮想化 3つの課題
DBのパフォーマンスに困ってませんか?