サイテック株式会社 > 【連載】新人女子プログラマーの技術修行日記 - 第5回 Javascript編⑤ ―プロトタイプチェーン―

エンジニア募集中!

サイテック株式会社で、根っからの技術者である社長や、大手IT企業から転職してきた仲間たちと議論しながら、社会をもっと豊かに、幸せにするアプリケーションを作ってみませんか?

  • Webアプリケーションエンジニア
  • エンジニア実習生

詳細はこちら

2009年04月01日 09:53

新人女子プログラマーの技術修行日記
第5回 Javascript編⑤ ―プロトタイプチェーン― * * * *

by ゆきんこ

Tags: JavaScript Ajax プロトタイプチェーン

前回のつづきで、プロトタイプチェーンについて。

"チェーン"とは鎖や連鎖という意味ですが、

プロトタイプの連鎖・・・。

前回オブジェクトがどうやってメソッドやプロパティを探しだしているのかということでしたが、

試しに以下のようなコードを実行してみます。


    Object.prototype.hello = function() {
          alert("Hello,Javascript!");
    }

    function A(){}
    function B(){}
    B.prototype = new A();    //オブジェクトAを継承
    function C(){}
    C.prototype = new B();    //オブジェクトBを継承

    var hoge = new C();
    hoge.hello();



結果はalertが出ます。

Cのコンストラクタから生成されたhogeオブジェクトが

helloメソッドを呼び出したとき、まず自身のオブジェクトの中を探し、

存在しない場合にオブジェクトのプロトタイプを連鎖的に辿っていき
(Cオブジェクト→C.prototype→Bオブジェクト→B.prototype→Aオブジェクト→A.prototype)、

最終的にObject.prototypeを参照します。

ここまで辿っても該当のプロパティが発見できなかった場合、初めて、そのプロパティが未定義と判断されるというわけです。

Javascriptのデータはすべてオブジェクトなので、

すべてのオブジェクトは、最上位の親オブジェクト”Object” の子オブジェクトとして定義されています。

したがって終点はObject.prototypeということですね。

簡単にですがこれがプロトタイプチェーンです。

なかなか面白いなぁと思うプロトタイプの継承メカニズムですが、

普段javascriptを扱っていてもなかなかぱっと使えるものではないですが、

継承やprototypeによる拡張が使えれば簡単なライブラリを作る際、便利だと思います。


ライブラリ…そろそろAjaxについても掘り下げていきたい感じになってきました。

ここも奥が深いところなのでベースをしっかり理解したいものです。

この記事の執筆者

新人女子プログラマ ゆきんこ 27歳 入社2年目

知識も技術もほぼゼロからスタートしてる、新人です。 『☆新人女子プログラマーの技術修行日記☆』書いてます。 【テー...

この人の会社をみる この人関連のイベントをさがす この人と一緒にはたらく

コメント

(メールアドレスは公開されません。メールで返答が欲しい場合などに入力してください)

このエントリへのトラックバックURL

トラックバック

トラックバックはありません

メンバー紹介

mhas

mhas

最近、清掃の方が顔を覚えてくれました・・・

291

291

皆さん、はじめまして。 突然ですが下記リンクのGoogleストリートビューで周辺を見回してみてください。 goog...

たむかい

たむかい

はじめまして。サイテックのたむかいです。世の中では、ITの仕事は新3Kなんて言われることがあるそうです。きつい・帰...