Sobes.tech
Middle

Perché non si può usare la parola chiave 'this' in JavaScript?

sobes.tech AI

Risposta dell'AI

this non può essere usato nelle funzioni freccia per legare al proprio contesto. Le funzioni freccia non creano il proprio this, ma ereditano il suo valore dall'ambito in cui sono state definite.

Inoltre, this è poco affidabile nei callback di operazioni asincrone o negli handler di eventi senza un binding esplicito del contesto (.bind(), .call(), .apply()), poiché il suo valore può cambiare o diventare l'oggetto globale (in modalità non strict) o undefined (in modalità strict).

Esempio:

function funzioneTradizionale() {
  console.log(this); // this dipende dalla chiamata
}

const funzioneFreccia = () => {
  console.log(this); // this eredita dal contesto esterno
};

const obj = {
  metodo: funzioneTradizionale
};

obj.metodo(); // this - obj
funzioneTradizionale(); // this - oggetto globale (window / global)

const obj2 = {
  metodo: funzioneFreccia
};

obj2.metodo(); // this - ereditato. Se definito nel contesto globale, sarà global/window.