Well, I was doing more things to get clarify the 'this' unclear, in the example code from your post: //////////////////////////////////////////////////// var testHobbies = { hobbies: ['Cricket', 'Football', 'Blogging'], name: 'Alex', logHobbies() { this.hobbies.forEach(function(elem){ console.log( ${this.name} knows ${elem} ); }); } } //////////////////////////////////////////////////////// So, changing in the code 'this.name' by only 'this' when it runs result the following output; [object global] knows Cricket [object global] knows Football [object global] knows Blogging Then taking from your explanation on the Binging part: "if the this keyword is not resolved with any of the above bindings, implicit, explicit or new then, the this binds to the window(global) object." So in the example code above, the 'this' inside the anonymous function binds to object global, because 'this' keyword is not resolved with any of bindings: implicit, explict or new, and also it doesn't exist in its function context. That is what I understand until here.