Какво е this в JavaScript?
sobes.tech AI
Отговор от 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: 'Alicia' };
greet.call(person); // Здравей, Alicia!
greet.apply(person); // Здравей, Alicia!
const boundGreet = greet.bind(person);
boundGreet(); // Здравей, Alicia!
В стрелкови функции (Arrow Functions) this няма собствен контекст. То лексикално наследява от областта, в която е дефинирана.
const obj2 = {
name: 'Bob',
greet: function() {
const arrowGreet = () => {
console.log(`Здравей от ${this.name}!`); // this се отнася към obj2
};
arrowGreet();
}
};
obj2.greet(); // Здравей от Bob!
const obj3 = {
name: 'Charlie',
greet: () => {
console.log(`Здравей от ${this.name}!`); // this се отнася към window (или undefined в строг режим), не към obj3
}
};
obj3.greet(); // Здравей от undefined! (или грешка)
Контекстът this може да бъде неясен, особено при предаване на callback-и или асинхронни операции. Разбирането на правилата за this е критично за правилната работа на JavaScript.