When you use 'this' keyword in global context, it is bound to global object (window in browser)
When you use this inside a function defined in the global context , this is still bound to global object since the function is actually made a method of global context.
Above foo is made a method of global object.
Calling a Function
The 'this' keyword remains the global object if you're calling a function.
Inside constructor function
When the function is used as a constructor (that is when it is called with new keyword), this inside function body points to the new object being constructed.