This в JavaScript
This ключевое слово является одним из самых запутанных и непонятных частей JavaScript. Ключевое слово this this ведет себя по-разному в JavaScript по сравнению с другим языком. В объектно-ориентированных языках ключевое слово «this» относится к текущему экземпляру класса. В JavaScript значение этого определяется главным образом контекстом вызова функции и где он вызывается. В большинстве случаев значение этого определяется тем, как вызывается функция. Он не может быть задан при назначении во время выполнения, и при каждом вызове функции он может быть различным.
Глобальный масштаб
Когда вы используете ключевое слово «this» в глобальном контексте, оно привязано к глобальному объекту (окно в браузере).
document.write(this); //[object Window]
Когда вы используете это внутри функции, определенной в глобальном контексте , это все еще связано с глобальным объектом, поскольку функция фактически является методом глобального контекста.
function foo(){ return this; } document.write(foo()); //[object Window]
Выше foo делается методом глобального объекта.
Вызов функции
Ключевое слово this это глобальный объект, если вы вызываете функцию.
window.meGlobal = "I'm the window object"; function foo() { alert(this.meGlobal); // I'm the window object alert(window === this); // true } foo();
Функция внутреннего конструктора
Когда функция используется как конструктор (то есть, когда она вызывается с новым ключевым словом), это внутреннее тело функции указывает на новый объект, который строится.
var globalVar = "I am Global"; function callMe() { this.globalVar = "inside function"; } var obj1 = new callMe(); //adds globalVar to obj1 document.write(obj1.globalVar); //call me
Источник: net-informations.com/js/iq/this.htm