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"

