callとapply

======================================

call()/apply()

 Functionクラスには、call()とapply()と言うメソッドがあります。この二つのメソッドは、どちらも「関数呼び出し」を目的としており、引数の指定方法に違いがあります。

// apply()メソッドの定義
Function.prototype.apply (thisArg, argArray)

// call()メソッドの定義
Function.prototype.call (thisArg [ , arg1 [ , arg2, … ] ] )

 どちらも、第一引数は「thisArg」となっています。これは、関数内で使用するthisキーワードが指すオブジェクトです。もし thisArgにnullやundefinedを指定すると、関数内で使用するthisはグローバルオブジェクト(ブラウザ環境であればwindowオブジェクト)を指すことになります。

ちなみに,

hoge.call(obj, arg1, arg2);
と呼び出した場合、

obj.hoge2 = hoge;
obj.hoge2(arg1, arg2);

とした場合と同じになるみたい。

======================================

参考サイト : http://builder.japan.zdnet.com/sp/javascript-kickstart-2007/story/0,3800083428,20371265,00.htm