Heim >Web-Frontend >js-Tutorial >Wie gehen Pfeilfunktionen in JavaScript mit „dieser' Bindung um und was sind die Problemumgehungen?

Wie gehen Pfeilfunktionen in JavaScript mit „dieser' Bindung um und was sind die Problemumgehungen?

DDD
DDDOriginal
2024-12-22 03:21:16805Durchsuche

How Do Arrow Functions in JavaScript Handle `this` Binding, and What Are the Workarounds?

Pfeilfunktionen und Bindung: Das „dieses“-Verhalten entmystifizieren

Pfeilfunktionen, eine moderne JavaScript-Funktion, bieten eine prägnante Syntax zum Deklarieren von Funktionen. Ein bemerkenswerter Unterschied zwischen Pfeilfunktionen und regulären Funktionen ist jedoch ihr Verhalten in Bezug auf die „diese“-Bindung.

„diese“-Bindung in Pfeilfunktionen

Pfeilfunktionen erstellen keine eigene „diese“-Bindung . Stattdessen erben sie es vom umschließenden Bereich. Das bedeutet, dass sich „this“ in einer Pfeilfunktion auf denselben Wert bezieht wie „this“ in der umgebenden Funktion oder im globalen Bereich.

Ein Beispiel für ungebundenes „this“

Betrachten Sie das bereitgestellte Beispiel in der Frage:

var f = () => console.log(this);

Hier ist „this“ in der Pfeilfunktion „f“ ungebunden. Wenn „f“ aufgerufen wird, verwendet es die „this“-Bindung des globalen Bereichs, die normalerweise auf das Fensterobjekt verweist. Infolgedessen würde der Aufruf von „fBound()“ wie beabsichtigt das Fensterobjekt anstelle des „o“-Objekts protokollieren.

Bindung von „this“ in Pfeilfunktionen

Während Pfeilfunktionen nicht unterstützt werden Bei der traditionellen Bindung mit „bind“ gibt es alternative Ansätze, um eine ähnliche Funktionalität zu erreichen:

  • Verwendung regulärer Funktionen: Definieren eine reguläre Funktion als Vermittler, die „this“ an das gewünschte Objekt bindet, bevor eine Pfeilfunktion zurückgegeben wird:
var fBound = () => {
  console.log(this);
}.bind(o);
  • Verwenden von ES6-Klassen: Definieren Sie eine Klasse, die stellt die gewünschte „This“-Bindung bereit und verwendet Pfeilfunktionen als Methoden:
class MyClass {
  constructor() {
    this.f = () => console.log(this);
  }
}

const o = new MyClass();
o.f(); // logs the 'o' object

Zusammenfassend lässt sich sagen, dass Pfeilfunktionen zwar viele Vorteile bieten, Sie verhalten sich in Bezug auf „diese“ Bindung anders als bei regulären Funktionen. Wenn Sie diese Unterscheidung verstehen, können Sie Pfeilfunktionen und alternative Ansätze effektiv nutzen, um die gewünschte „diese“ Bindung zu erreichen.

Das obige ist der detaillierte Inhalt vonWie gehen Pfeilfunktionen in JavaScript mit „dieser' Bindung um und was sind die Problemumgehungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn