JavaScript Academy · Lezione

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.

Lezione 1 di 38 passaggi

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
this lessicale e dinamico, ripasso delle arrow function — illustrazione 1

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
this lessicale e dinamico, ripasso delle arrow function — illustrazione 2

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"
this lessicale e dinamico, ripasso delle arrow function — illustrazione 3

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();
this lessicale e dinamico, ripasso delle arrow function — illustrazione 4

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());
this lessicale e dinamico, ripasso delle arrow function — illustrazione 5

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.
this lessicale e dinamico, ripasso delle arrow function — illustrazione 6

Quiz sul this delle arrow

Controllo rapido: comportamento del this nelle arrow.

this lessicale e dinamico, ripasso delle arrow function — illustrazione 7

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.

this lessicale e dinamico, ripasso delle arrow function — illustrazione 8
Gratis per iniziare

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

  1. this lessicale e dinamico, ripasso delle arrow function
  2. Problemi nell’estrazione dei metodi, applicazione parziale
  3. Alternative funzionali — passare il contesto, closure, piccoli helper
← Torna a JavaScript Academy