Marius Schulz created a free Egghead course where he explains how JavaScript this keyword behaves in various contexts.

JavaScript’s this keyword is a source of confusion for many new and experienced developers alike. It can be frustrating if, for some reason, this doesn’t point to the context that was intended. This course will help you understand JavaScript’s this mechanism in depth.

https://egghead.io/courses/understand-javascript-s-this-keyword-in-depth