Показать сообщение отдельно
  #3 (permalink)  
Старый 22.05.2019, 11:15
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,126

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 ();
Ответить с цитированием