Heim > Web-Frontend > js-Tutorial > Wie gehen Pfeilfunktionen mit dem Schlüsselwort „this' in JavaScript um?

Wie gehen Pfeilfunktionen mit dem Schlüsselwort „this' in JavaScript um?

Patricia Arquette
Freigeben: 2024-12-10 10:19:10
Original
483 Leute haben es durchsucht

How Do Arrow Functions Handle the `this` Keyword in JavaScript?

Pfeilfunktionen und „dieses“

In ES6 führen Pfeilfunktionen einen neuen Ansatz zur Methodendefinition ein. Es gibt jedoch einen bemerkenswerten Unterschied zwischen Pfeilfunktionen und herkömmlichen Funktionen, wenn es um den Zugriff auf das Schlüsselwort „this“ geht.

Das Problem:

Bedenken Sie den folgenden Code:

var person = {
  name: "jason",

  shout: () => console.log("my name is ", this.name)
}

person.shout() // Should print out my name is jason
Nach dem Login kopieren

Während das beabsichtigte Ergebnis darin besteht, „mein Name ist Jason“ auszugeben, gibt die Konsole nur „mein Name ist“ aus. Dies liegt daran, dass sich Pfeilfunktionen in Bezug auf die „diese“ Bindung anders verhalten als herkömmliche Funktionen.

Die Erklärung:

Im Gegensatz zu herkömmlichen Funktionen binden Pfeilfunktionen die „diese“ Bindung nicht. this'-Schlüsselwort auf den enthaltenden Bereich anwenden. Stattdessen erben sie die „this“-Bindung vom umgebenden Kontext. Im obigen Beispiel bezieht sich das „dies“ in der Pfeilfunktion auf das globale Objekt, nicht auf das Objekt „Person“.

Die Lösung:

Es gibt mehrere Möglichkeiten, dieses Problem anzugehen:

  1. Verwenden Sie eine Grenze Funktion:
// Bind 'this' to the 'person' object
var shoutBound = function() { console.log("my name is ", this.name); }.bind(person);

// Assign the bound function to the 'shout' property
person.shout = shoutBound;
Nach dem Login kopieren
  1. Verwenden Sie eine traditionelle Funktion:
// Define a traditional function with 'this' bound to 'person'
person.shout = function() { console.log("my name is ", this.name); };
Nach dem Login kopieren
  1. Verwenden ES6-Methodendeklaration:
// ES6 method declaration implicitly binds 'this' to the object
person = {
  name: "jason",

  shout() {
    console.log("my name is ", this.name);
  }
};
Nach dem Login kopieren

Von Wenn Sie das unterschiedliche Verhalten von Pfeilfunktionen in Bezug auf „diese“ Bindung verstehen, können Sie effektiven und flexiblen Code in ES6 schreiben.

Das obige ist der detaillierte Inhalt vonWie gehen Pfeilfunktionen mit dem Schlüsselwort „this' in JavaScript um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage