this lessicale e dinamico, ripasso delle arrow function
Vedi come il this dinamico dipenda dal punto di chiamata e come le arrow function catturino il this lessicale; usi esempi brevi e chiari.
this lessicale e dinamico, ripasso delle arrow function è una lezione JavaScript Academy gratuita su CoddyKit. Questa è la lezione 1 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento JavaScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso JavaScript Academy include 3 lezioni in totale.
Panoramica
Obiettivo: capire a cosa punta this nei diversi contesti.
- this dinamico: viene determinato dal contesto della chiamata
- this delle arrow: viene catturato lessicalmente
- Problema comune: estrarre un metodo fa perdere this
- Usate le arrow per mantenere this all'interno delle callback

Dimostrazione del this dinamico
this dinamico: chiamare come obj.method() imposta this = obj; estrarre la funzione fa perdere l'oggetto.
// Dynamic this depends on HOW we call the function
const person = {
name: "Ayla",
say: function () {
return "Hi " + this.name;
}
};
console.log("method call:", person.say()); // "Hi Ayla"
// Extract then call: this is lost
const talk = person.say;
console.log("extracted call:", talk()); // likely "Hi undefined" in strict mode -> this is undefined

Arrow = this lessicale
Una funzione arrow acquisisce this dallo scope della funzione o dell'oggetto circostante quando viene creata; non lo cambia al momento della chiamata.
// Arrow functions capture this from where they are created
const box = {
label: "blue",
showLater: function () {
// Arrow keeps this === box
const fn = () => "box:" + this.label;
return fn();
}
};
console.log("arrow captured this:", box.showLater()); // "box:blue"

Callback: mantenere this con le arrow
Nelle callback, una funzione normale spesso perde this; una funzione arrow mantiene intatto il this esterno.
// Using a normal function in a callback can lose this
const widget = {
id: 7,
normal: function () {
setTimeout(function () {
// here this is not widget in many environments
console.log("normal cb this.id:", this && this.id);
}, 0);
},
arrow: function () {
setTimeout(() => {
// arrow keeps lexical this from arrow()
console.log("arrow cb this.id:", this.id);
}, 0);
}
};
widget.normal();
widget.arrow();

Soluzione semplice per l'estrazione
Se estraete un metodo, racchiudetelo in una piccola funzione arrow che catturi l'oggetto oppure collegatelo con bind (nella prossima lezione). Mantenete la soluzione semplice per chi sta imparando.
// If you must extract, wrap with an arrow capturing the object
const account = {
owner: "Mila",
label: function () { return "Owner:" + this.owner; }
};
// Lost this:
const lost = account.label;
console.log("lost:", lost()); // "Owner:undefined" (this missing)
// Fixed: create an arrow that closes over account
const safe = () => account.label();
console.log("fixed via arrow wrapper:", safe());

Buone pratiche
Suggerimenti:
- Metodi: chiamateli con obj.method() affinché this sia l'oggetto.
- Callback: preferite le funzioni arrow per mantenere il this lessicale.
- I metodi estratti perdono this; racchiudeteli in una funzione arrow oppure collegateli.

Quiz sul this delle arrow
Controllo rapido: comportamento del this nelle arrow.

Riepilogo
Riepilogo: this è dinamico nelle funzioni normali (viene impostato dal contesto della chiamata) e lessicale nelle arrow (viene catturato nel punto in cui vengono create). Usate le arrow nelle callback e racchiudete i metodi estratti per mantenere semplice il comportamento.

Impara JavaScript con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 59
- Lezioni
- 200
Domande Frequenti
La lezione «this lessicale e dinamico, ripasso delle arrow function» è gratuita?
Sì — il testo completo di «this lessicale e dinamico, ripasso delle arrow function» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso JavaScript Academy, passa a CoddyKit PRO. Il corso JavaScript Academy include 3 lezioni in totale.
Cosa imparerò in «this lessicale e dinamico, ripasso delle arrow function»?
Vedi come il this dinamico dipenda dal punto di chiamata e come le arrow function catturino il this lessicale; usi esempi brevi e chiari. Eserciti JavaScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare JavaScript Academy?
Non è richiesta alcuna esperienza precedente. JavaScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 3.
Quanto tempo richiede la lezione «this lessicale e dinamico, ripasso delle arrow function»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione JavaScript Academy?
Sì. Ogni lezione JavaScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- this lessicale e dinamico, ripasso delle arrow function
- Problemi nell’estrazione dei metodi, applicazione parziale
- Alternative funzionali — passare il contesto, closure, piccoli helper