Назад к вопросам
Junior
72
questionbank
Что такое ключевое слово 'this'?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
this - это ключевое слово в JavaScript, которое ссылается на объект, в контексте которого выполняется текущий код. Его значение определяется способом вызова функции.
Основные способы определения this:
- Глобальный контекст: Вне функции,
thisссылается на глобальный объект (windowв браузере,globalв Node.js). - Обычный вызов функции: В нестрогом режиме (
strict mode),thisтакже ссылается на глобальный объект (илиundefined, если функция вызывается как метод объекта, но сам этот объектnullилиundefined). В строгом режиме,thisравноundefined. - Метод объекта: Если функция вызывается как метод объекта (т.е. через оператор точки
.),thisссылается на объект, который владеет методом. - Конструктор: При использовании оператора
new,thisссылается на новый создаваемый экземпляр объекта. - Методы
call(),apply(),bind(): Эти методы позволяют явно установить значениеthisпри вызове функции.bind()возвращает новую функцию с привязаннымthis, в то время какcall()иapply()вызывают функцию с указаннымthis. - Стрелочные функции: Стрелочные функции не имеют собственного
this.thisв стрелочной функции лексически наследуется из окружающей области видимости, в которой она была определена.
Примеры:
// Глобальный контекст
console.log(this === window); // true (в браузере)
// Обычный вызов функции
function myFunction() {
console.log(this);
}
myFunction(); // window (в нестрогом режиме)
// Метод объекта
const myObject = {
myMethod: function() {
console.log(this);
}
};
myObject.myMethod(); // myObject
// Конструктор
function MyConstructor() {
this.value = 10;
console.log(this);
}
const instance = new MyConstructor(); // instance object
// call(), apply(), bind()
function greet(name) {
console.log("Hello, " + name + "! My name is " + this.name);
}
const person = { name: "Alice" };
greet.call(person, "Bob"); // Hello, Bob! My name is Alice
greet.apply(person, ["Bob"]); // Hello, Bob! My name is Alice
const boundGreet = greet.bind(person);
boundGreet("Bob"); // Hello, Bob! My name is Alice
// Стрелочная функция
const arrowFunction = () => {
console.log(this);
};
arrowFunction(); // window (если определена в глобальном контексте)
Понимание того, как this определяется в различных контекстах, критически важно для написания корректного JavaScript-кода.