'this' - это ключевое слово, а не свойство, поэтому вам нужно ссылаться на него как на отдельную семантику:
//correct syntax...that gets value of this keyword
var that = this
//unusual syntax...that is undefined, unless you explicitly set foo.this earlier
vat that = foo.this;
В частности, значение «this» присваивается каждому контексту функции времени выполнения (и глобальному контексту). Он неизменен в данном контексте. Правила несколько сложны, но важные случаи ...
В глобальном контексте «это» всегда будет глобальным объектом (например, окном)
var that = this; //window
При вызове из вызова метода 'this' будет получателем вызова метода
obj.foo = function() {
return this;
}
obj.foo(); //obj
При вызове из вызова функции 'this' будет глобальным объектом
var obj = {};
obj.foo = function() {
return this;
}
var myFn = obj.foo;
myFn(); //window
Вы также можете использовать call / apply, чтобы установить пользовательское значение this в контексте функции. Если вам интересно узнать больше, прочитайте это: (без каламбура :-)) http://javascriptweblog.wordpress.com/2010/08/30/understanding-javascripts-this/