apply と call

ここんとこ漸く javascript 頭になってきて、
チームの自分より詳しい人にも教わってるうちに、
やっとこの人の言う事がわかるようになって来た。


Function.prototypeを拡張して遅延実行を実現する
call と apply がムニャムニャムニャな人はこれを読むとよいです。


* call は固定引数
* apply は可変引数


で。
this はどこ問題
この問題の正解がやっとわかった。


hoge っていう変数にインスタンス化したクラスの fuga っていうメソッドを、
setTimeout で呼び出して、その中で this 使いたかったら、こうするのだ。


こうするのだ。とか書いてるけど、こんなの文章でもなんでもないよな。
hoge の fuga で this がどうとか、こんなの人に聞かれたら頭がおかしいと思われるか、
その逆かだ。

Hoge = function(){
   this.something='lalala..'
}

Hoge.prototype = {
   fuga: function() {
      alert(this.something);
   }
}

var hoge = new Hoge();
setTimeout(function(){hoge.fuga.call(hoge);}, 100);

test はしてないけど、こういうことだ。


チームで仕事するとスキルアップが断然早い。


javascript やる上で、 call と apply は第一関門だと思う。
漫画とかで頭の上で電球がピカッってなるやつ、
ほんとそんな感じだったよ!

うそだけどね。本当はじわじわきた。
染みが広がっていって、あ、世界地図か!みたいなイメージ。


第二関門は、イベントドリヴンへの理解だな。
(個人差があります)