"The this
keyword always refers to the object that the containing function is a method of."
Great, sounds simple enough, but here's what I'm wondering about...
For example:
function func1() {
function func2() {
alert(this == window); // true
}
func2();
alert(this == window); // true
}
func1.func3 = function () {
alert(this == window); // false
alert(this == func1); // true
};
func1();
func1.func3();
Now, since func1
is actually a method of the global (window
) object (a function object assigned to the property func1
of the global object) it makes sense that this
inside func1
refers to the global object, and since func3
is a method of func1
's function object it makes sense that this
inside func3
refers to func1
's function object.
The thing that bothers me is func2
. I know that this
inside a nested function is also supposed to reference the global object, but I'm not sure why since func2
is NOT a method of the global object. As far as I understand (and this is the part I might be completely wrong about) func2
is a method of func1
's call (activation / variable) object. Now, if I'm right about this (and I'm not sure that I am) then shouldn't this
inside func2
refer to func1
's call object instead of the global object?
So, I guess my question would be: Is a nested function a method of the call (activation) object of the function it is nested in, and if so, shouldn't this
refer to that call object instead the global object?