In JavaScript, the this keyword points to the owner of the function it is contained within. If it occurs within a method as part of a class, it refers to the class itself, or rather the object instance of the class created when your code is executing. Out of the context of a class, this usually points to the global window object.
If you want to call a method and make sure that this refers to a different object than the one it would normally refer to, use apply or call. There's a slight difference between these two methods: the former expects any arguments you're passing to the function to be supplied as an array, while the latter does not. Examples:
var showMessage = function() {
alert(this.message);
};
var setMessage = function(message) {
this.message = message;
}
// this points to window
showMessage(); // undefined
setMessage('Foo');
showMessage(); // 'Foo'
In these examples, the this keyword refers to the global object itself. Now we can create a class and force the this keyword to refer to our class instead of window.
var LogMessage = function() {
this.message = '';
};
var myLogMessage = new LogMessage();
setMessage.call(myLogMessage, 'Foo');
setMessage.apply(myLogMessage, ['Foo']);
showMessage.call(myLogMessage); // 'Foo'