When a function is attached to an object and called:
function f() { return this.x; }
var o = {x: 20};
o.func = f;
o.func(); //evaluates to 20
this
refers to the object that the function was called as a method of. It's equivalent to doing f.call(o)
.
When the function is called not as part of an object, this
refers to the global object. How do I check if a function is being called from a non-object context? Is there any standard keyword to access the global object? Is the only way to do it something like this?
globalobj = this;
function f() { if (this == globalobj) doSomething(); }
Note: I have no particular use case in mind here - I actually am asking about this exact mechanism.