0Pricing
JavaScript Academy · Lektion

Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet

Sehen, wie dynamisches this vom Aufrufort abhängt und wie Pfeilfunktionen das lexikalische this übernehmen; mit kleinen, klaren Beispielen üben

Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des JavaScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der JavaScript Academy-Kurs umfasst insgesamt 3 Lektionen.

Das Wichtigste im Überblick

Ziel: Verstehen Sie, wann this worauf verweist.

  • Dynamisches this: wird durch die Aufrufstelle bestimmt
  • Arrow-this: wird lexikalisch übernommen
  • Häufige Falle: Beim Herauslösen einer Methode geht this verloren
  • Verwenden Sie Arrow-Funktionen, damit this in Callbacks erhalten bleibt
Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet — Illustration 1

Demo: dynamisches this

Dynamisches this: Der Aufruf als obj.method() setzt this = obj. Wird die Funktion herausgelöst, geht das Objekt verloren.

// 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
Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet — Illustration 2

Arrow-Funktion = lexikalisches this

Eine Arrow-Funktion übernimmt this beim Erstellen aus dem umgebenden Funktions- oder Objektkontext. Beim Aufruf ändert sich dieser Wert nicht.

// 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"
Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet — Illustration 3

Callbacks: this mit Arrow-Funktionen erhalten

In Callbacks verliert eine normale Funktion häufig this; eine Arrow-Funktion behält das äußere this bei.

// 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();
Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet — Illustration 4

Einfache Lösung für herausgelöste Methoden

Wenn eine Methode herausgelöst wird, umschließen Sie sie mit einer kleinen Arrow-Funktion, die einen Verweis auf das Objekt einschließt, oder binden Sie sie (in der nächsten Lektion). Halten Sie es für Anfänger einfach.

// 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());
Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet — Illustration 5

Gute Gewohnheiten

Tipps:

  • Methoden: Rufen Sie sie mit obj.method() auf, damit this das Objekt ist.
  • Callbacks: Bevorzugen Sie Arrow-Funktionen, damit das lexikalische this erhalten bleibt.
  • Bei herausgelösten Methoden geht this verloren. Umschließen oder binden Sie sie.
Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet — Illustration 6

Quiz zu Arrow-this

Schnelltest: Verhalten von Arrow-this.

Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet — Illustration 7

Zusammenfassung

Zusammenfassung: Bei normalen Funktionen ist this dynamisch und wird durch die Aufrufstelle bestimmt; bei Arrow-Funktionen ist es lexikalisch und wird beim Erstellen übernommen. Verwenden Sie Arrow-Funktionen in Callbacks und umschließen Sie herausgelöste Methoden, damit das Verhalten einfach bleibt.

Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet — Illustration 8

Häufig gestellte Fragen

Ist die Lektion „Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet“ kostenlos?

Ja — der vollständige Text von „Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des JavaScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der JavaScript Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet“?

Sehen, wie dynamisches this vom Aufrufort abhängt und wie Pfeilfunktionen das lexikalische this übernehmen; mit kleinen, klaren Beispielen üben Du übst JavaScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um JavaScript Academy zu starten?

Keine Vorkenntnisse erforderlich. JavaScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 3.

Wie lange dauert die Lektion „Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser JavaScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede JavaScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Lexikalisches vs. dynamisches this, Pfeilfunktionen erneut betrachtet
  2. Fallstricke bei der Methodenextraktion, partielle Anwendung
  3. Funktionale Alternativen – Kontext übergeben, Closures, kleine Hilfsfunktionen
← Zurück zu JavaScript Academy