以下の関数呼び出しのthisは一見するとobjを指すように思えるが、実際は前述の「パターン1」の呼び出しであるためthisはGlobalObjectを指す。
var obj = { testMethod: function() {
var func = function(){ console.log(this); };
func();
} };
obj.testMethod(); // ... thisは、GlobalObject(通常はwindowオブジェクト)この問題は、慣例として以下のように記述することで回避することが多い。
var obj = { func: function() {
var self = this;
var func = function(){ console.log(self); };
func();
} };
obj.testMethod(); // ... thisは、obj