this - это всегда ссылка на тот или иной объект
т.е. this.name это тоже самое что и ["какой то объект"].name
Во многих языках this это константный указатель на экземпляр класса т.е. он определяется в момент компиляции программы и после этого не изменяется
В JavaScript this вычисляется каждый раз когда вызывается функция и указывает он на объект в контексте которого исполняется функция.
Все данные в JavaScript хранятся в виде свойств объектов.
Функции не исключение вызов функции всегда обращение в свойству какого либо объекта а this указывает у какого объекта вызвана функция.
Даже если мы явно не привязываем переменную к какому то объекту интерпретатор сделает это за нас не явным способом. К примеру
function A (){
alert("вызвана функция А");
};
window.A();
Оператор new приводит к тому что вместо обычного вызова функции происходит привязка контекста в котором вызывается функция
["Новый создоваемый объект"].constructor( параметры ...)
Грубо говоря this указывает на объект находящийся за точкой но точка не всегда явно видна в коде
т.к. функции в JS это объекты первого класса то они могут присваиваться любым свойствам объекта и т.к. объект в контексте которого вызвана функция изменился то и this будет изменен.
Небольшой пример
;
function GlobFunc (){
alert(this.name) ;
};
A = {name:"Obj A", propertyLinkFunction: GlobFunc };
B = {name:"Obj B", propertyLinkFunction: GlobFunc };
C = {name:"Obj C", propertyLinkFunction: GlobFunc };
A.propertyLinkFunction ();
B.propertyLinkFunction ();
C.propertyLinkFunction ();