JavaScriptにcallメソッドがあります。直感的には理解しがたい不思議なメソッドです。
機能は「現在のオブジェクトの代わりに、他のオブジェクトを使用してメソッドを呼び出すもの」というらしい。
分かりにくいので下記のサンプルで示すと、関数hogeのthisにobjが一時的にセットされた状態で関数hogeが実行されていることになります。
var obj = {
say: 'Hello'
}
function hoge(){
$('<p> ' + this.say + '</p>').appendTo('#result');
}
hoge(); // 当然ですがundefinedが表示されます。
hoge(obj); // これもundefinedが表示されます。
hoge.call(obj); // thisに渡すオブジェクトを指定