First, check if the function of interest is called with the new keyword. If so, then this is bound to the new object created by the function. If not, check if the function is being called with call or apply, if so, the first argument tells you what the value of this is bound to. If not, check if the function is called in the context of another object, (someObj.fn()), if so, then this is bound to the object. If none of these cases are met and the function is simply invoked without any context, this will be bound to the global object in non-strict mode. However, in the strict mode, the value of this will be undefined.