💬 Спрашивают в 17% собеседований
this является ключевым словом, которое используется в функциях и методах и указывает на объект, в контексте которого они были вызваны.Его значение зависит от того, как именно вызывается функция, и может изменяться в различных контекстах выполнения.
🤔Контексты использования:
1️⃣ Глобальный контекст:
В глобальном контексте (вне каких-либо функций) он ссылается на глобальный объект. В браузере глобальным объектом является window, в Node.js — global.
console.log(this === window); // в браузере вернет true
2️⃣ Функции (не строгий режим):
В функциях, вызванных обычным способом (не как методы объекта), он ссылается на глобальный объект. В строгом режиме (
"use strict") this будет undefined, если функция вызвана не как метод объекта. function show() {
console.log(this === window); // true в браузере в нестрогом режиме
console.log(this); // undefined в строгом режиме
}
show();3️⃣ Методы объекта:
Когда функция вызывается как метод объекта, он ссылается на объект, частью которого является метод.
const obj = {
myMethod() {
console.log(this);
}
};
obj.myMethod(); // this ссылается на obj4️⃣ Конструкторы:
В функции-конструкторе, вызванной с
new, он ссылается на вновь созданный объект.function Person(name) {
this.name = name;
}
const person = new Person("Alice");
console.log(person.name); // Alice5️⃣ Стрелочные функции:
Стрелочные функции не имеют собственного контекста, вместо этого они захватывают его из внешнего лексического окружения.
const obj = {
method: function() {
const arrowFunc = () => console.log(this);
arrowFunc(); // this ссылается на obj
}
};
obj.method();6️⃣ Явное привязывание:
С помощью методов
call, apply и bind можно явно указать контекст для функции.function show() {
console.log(this);
}
const obj = {name: "Explicit context"};
show.call(obj); // this в show() ссылается на obj🤔 Итог:
Важность понимания this
Понимание механизма его работы важно для эффективного использования, особенно при работе с объектно-ориентированным кодом и при создании сложных веб-приложений, где часто требуется контролировать контекст выполнения функций и методов.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых