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"