Sobes.tech
Middle

Защо не трябва да използвате ключовата дума 'this' в JavaScript?

sobes.tech AI

Отговор от AI

this не може да се използва в стрелкови функции за свързване към собствен контекст. Стрелковите функции не създават собствен this, а наследяват неговата стойност от обхвата, в който са дефинирани.

Също така, this е ненадежден в обратните извиквания на асинхронни операции или обработчици на събития без явна връзка на контекста (.bind(), .call(), .apply()), тъй като неговата стойност може да се промени или да стане глобален обект (в режим без строги правила) или undefined (в строги правила).

Пример:

function традиционнаФункция() {
  console.log(this); // this зависи от извикването
}

const стрелковаФункция = () => {
  console.log(this); // this наследява от външната област
};

const обект = {
  метод: традиционнаФункция
};

обект.метод(); // this - обект
традиционнаФункция(); // this - глобален обект (window / global)

const обект2 = {
  метод: стрелковаФункция
};

обект2.метод(); // this - наследено. Ако е дефинирано в глобалната област, то global/window.