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.