JavaScript Ключевое слово this
Пример
            const person = {
              firstName: "John",
              lastName : "Doe",
              id       : 5566,
              fullName : function() {
                return this.firstName + " " + this.lastName;
              }
            };
        
        Попробуйте сами »
    Что такое this?
JavaScript ключевое слово this относится к объекту, которому оно принадлежит.
Оно имеет разные значения в зависимости от того, где оно используется:
- В методе 
thisотносится к владельцу объекта. - Сам по себе 
thisотносится к глобальному объекту. - В функции 
thisотносится к глобальному объекту. - В функции в строгом режиме 
thisявляетсяundefined. - В событии 
thisотносится к элементу получившему событие. - Такие методы, как 
call()иapply()могут ссылаться наthisв любом объекте. 
this в методе
В методе объекта this относится к "владельцу" метода.
В примере вверху этой страницы this относится к объекту person.
Объект person является владельцем метода fullName.
            fullName : function() {
              return this.firstName + " " + this.lastName;
}
        
        Попробуйте сами »
    this сам по себе
При использовании отдельно владелец является глобальным объектом, поэтому this относится к глобальному объекту.
В окне браузера глобальный объект [object Window]:
В строгом режиме, когда используется отдельно, this также относится к глобальному объекту [object Window]:
this в функции (по умолчанию)
В функции JavaScript владельцем функции является привязка по умолчанию для this.
Т.о., в функции this относится к глобальному объекту [object Window].
this в функции (строгий режим)
В строгом режиме JavaScript не допускается привязка по умолчанию.
Таким образом, при использовании в функции в строгом режиме this является undefined.
this в обработчиках событий
В обработчиках событий HTML this относится к элементу HTML, получившему событие:
Пример
            <button onclick="this.style.display='none'">
  Нажмите, чтобы удалить меня!
</button>
        
    Привязка метода объекта
В этих примерах this - это объект person (объект person является "владельцем" функции):
Пример
            const person = {
              firstName  : "John",
              lastName   : "Doe",
              id         : 5566,
              myFunction : function() {
                return this;
  }
            };
        
        Попробуйте сами »
    Пример
            const person = {
              firstName: "John",
              lastName : "Doe",
              id       : 5566,
              fullName : function() {
                return this.firstName + " " +
            this.lastName;
  }
            };
        
        Попробуйте сами »
    Другими словами: this.firstName означает firstName свойство this объекта (person).
Явная привязка функций
Методы call() и apply() являются предопределенными методами JavaScript.
Оба они могут использоваться для вызова метода объекта с другим объектом в качестве аргумента.
Вы можете узнать больше о call() и apply() позже в этом учебнике на нашем сайте W3Schools на русском.
В приведенном ниже примере при вызове person1.fullName с аргументом person2 this будет ссылаться на person2, даже если это метод person1:
Пример
            const person1 = {
              fullName: function() {
                return this.firstName + " " + this.lastName;
              }
}
            const person2 = {
              firstName:"John",
              lastName: "Doe",
            }
            person1.fullName.call(person2);  // Вернёт "John Doe"
        
        
    
