Что такое this в JavaScript?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
this в JavaScript — это ключевое слово, указывающее на контекст выполнения функции. Его значение определяется способом вызова функции.
Обычно this указывает на глобальный объект (в браузере window) в случае обычного вызова функции, если не в строгом режиме.
В строгом режиме ('use strict') в том же сценарии this будет undefined.
При вызове метода объекта this ссылается на сам объект.
const obj = {
method: function() {
console.log(this); // obj
}
};
obj.method();
При вызове конструктора (new с функцией), this указывает на новый созданный экземпляр объекта.
function Constructor() {
console.log(this); // экземпляр Constructor
}
const instance = new Constructor();
При использовании методов call, apply, bind, this явно устанавливается первым аргументом.
function greet() {
console.log(`Привет, ${this.name}!`);
}
const person = { name: 'Алиса' };
greet.call(person); // Привет, Алиса!
greet.apply(person); // Привет, Алиса!
const boundGreet = greet.bind(person);
boundGreet(); // Привет, Алиса!
В стрелочных функциях this не имеет собственного контекста. Оно лексически наследуется из той области видимости, где стрелочная функция была определена.
const obj2 = {
name: 'Боб',
greet: function() {
const arrowGreet = () => {
console.log(`Привет от ${this.name}!`); // this ссылается на obj2
};
arrowGreet();
}
};
obj2.greet(); // Привет от Боб!
const obj3 = {
name: 'Чарли',
greet: () => {
console.log(`Привет от ${this.name}!`); // this ссылается на window (или undefined в строгом режиме), не на obj3
}
};
obj3.greet(); // Привет от undefined! (или ошибка)
Контекст this может быть неочевиден, особенно при передаче колбэков или асинхронных операциях. Понимание правил определения this критично для корректной работы JavaScript.