以下のコードを見よ。
var func = function(){ console.log(this); }; var obj = {}; obj.funcMethod = func; // パターン1. 通常呼び出し func(); // ... thisは、GlobalObject(通常はwindowオブジェクト) // パターン2. オブジェクトのメソッドとして呼び出し obj.funcMethod(); // ... thisは、obj // パターン3. apply, call メソッドで呼び出し func.call (targetObj); // ... thisは、targetObj func.apply(targetObj); // ... thisは、targetObj // パターン4. bind メソッドで生成された関数オブジェクトの呼び出し var boundFunc = func.bind(boundObj); obj.boundFuncMethod = boundFunc; boundFunc(); // ... thisは、boundObj obj.boundFuncMethod(); // ... thisは、boundObj boundFunc.call(targetObj); // ... thisは、boundObj boundFunc.apply(targetObj); // ... thisは、boundObj