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に渡すオブジェクトを指定