Ключевое слово this — это ссылка на объект, который вызвал текущую функцию. Проще говоря, это способ функции понять, “кто ей владеет” или “от чьего имени” она работает. 🎯
[this] — это одна из важнейших концепций JavaScript, которая часто вызывает путаницу. Давайте разберем всё очень просто! 😊
[this] — это как паспорт функции. Оно показывает, к какому объекту привязана функция:
const user = {
name: 'Иван',
greet() {
console.log('Привет, ' + this.name); // this → user
}
};const cat = {
name: 'Мурка',
meow() {
console.log(this.name + ' мяукает'); // 'Мурка мяукает'
}
};
cat.meow(); // this → catfunction showThis() {
console.log(this); // зависит от режима работы
}
showThis(); // undefined (в строгом режиме)const person = {
name: 'Петр',
sayName() {
return this.name; // 'Петр'
}
};
person.sayName(); // this → personconst person = {
name: 'Петр',
sayName() {
return this.name;
}
};
const func = person.sayName;
func(); // this → undefined (в строгом режиме) ❌const counter = {
value: 0,
increment() {
this.value++; // изменяем свойство объекта
}
};const dog = {
name: 'Шарик',
sound: 'гав'
};
const bird = {
name: 'Чижик',
sound: 'чирик'
};
function makeSound() {
console.log(this.name + ' говорит ' + this.sound);
}
// Одна функция работает для разных объектов!
makeSound.call(dog); // 'Шарик говорит гав'
makeSound.call(bird); // 'Чижик говорит чирик'const obj = {
name: 'Иван',
greet() {
console.log('Привет, ' + this.name);
}
};
const greetFunc = obj.greet;
greetFunc(); // 'Привет, undefined' ❌const obj = {
name: 'Иван',
// Стрелочная функция не имеет своего this
arrowFunc: () => {
console.log(this.name); // undefined
}
};Понимание [this] помогает писать более предсказуемый код и избегать ошибок. Это очень важная тема для любого JavaScript разработчика! 💪
Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪