Sobes.tech
Middle

Dlaczego nie można używać słowa kluczowego 'this' w JavaScript?

sobes.tech AI

Odpowiedź od AI

this nie można używać w funkcjach strzałkowych do powiązania z własnym kontekstem. Funkcje strzałkowe nie tworzą własnego this, a dziedziczą jego wartość z zakresu, w którym zostały zdefiniowane.

Ponadto, this jest niepewne w wywołaniach zwrotnych operacji asynchronicznych lub obsługiwaczach zdarzeń bez jawnego powiązania kontekstu (.bind(), .call(), .apply()), ponieważ jego wartość może się zmienić lub stać się obiektem globalnym (w trybie nie-strict) lub undefined (w trybie strict).

Przykład:

function funkcjaTradycyjna() {
  console.log(this); // this zależy od wywołania
}

const funkcjaStrzałkowa = () => {
  console.log(this); // this dziedziczy z zakresu zewnętrznego
};

const obiekt = {
  metoda: funkcjaTradycyjna
};

obiekt.metoda(); // this - obiekt
funkcjaTradycyjna(); // this - obiekt globalny (window / global)

const obiekt2 = {
  metoda: funkcjaStrzałkowa
};

obiekt2.metoda(); // this - dziedziczy. Jeśli zdefiniowane w zakresie globalnym, to global/window.