【連載】Twitterまとめ - 第2回 サービス企画の苦しみ編(5月3週)
2010年05月27日
サイテック株式会社で、根っからの技術者である社長や、大手IT企業から転職してきた仲間たちと議論しながら、社会をもっと豊かに、幸せにするアプリケーションを作ってみませんか?
この会社の特徴を知る
など 8 記事
など 17 記事
など 66 記事
前回のつづきで、プロトタイプチェーンについて。
"チェーン"とは鎖や連鎖という意味ですが、
プロトタイプの連鎖・・・。
前回オブジェクトがどうやってメソッドやプロパティを探しだしているのかということでしたが、
試しに以下のようなコードを実行してみます。
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についても掘り下げていきたい感じになってきました。
ここも奥が深いところなのでベースをしっかり理解したいものです。
トラックバックはありません
メンバー紹介
2010年05月27日
2010年05月18日
2010年04月26日
2010年04月19日
2010年03月10日
2010年03月10日
2010年02月25日
2010年01月22日
2009年12月24日
2009年12月21日
コメント