Heim > Web-Frontend > js-Tutorial > Warum kann ich in ES6 keine Pfeilfunktionen für Objektmethoden verwenden?

Warum kann ich in ES6 keine Pfeilfunktionen für Objektmethoden verwenden?

Linda Hamilton
Freigeben: 2025-01-06 01:54:46
Original
304 Leute haben es durchsucht

Why Can't I Use Arrow Functions for Object Methods in ES6?

Pfeilfunktionen in ES6-Objekten

In ES6 können Sie Methoden in Objekten definieren, indem Sie sowohl die traditionelle Funktionssyntax als auch die eingeführte Kurzmethodensyntax verwenden in der Sprache:

var chopper = {
    owner: 'Zed',
    getOwner: function() { return this.owner; }
};
Nach dem Login kopieren
var chopper = {
    owner: 'Zed',
    getOwner() { return this.owner; }
};
Nach dem Login kopieren

Bei der Verwendung von Pfeilfunktionen können jedoch Einschränkungen auftreten Objektmethoden. Beispielsweise führt die Verwendung der folgenden Syntax zu einem Fehler:

var chopper = {
    owner: 'John',
    getOwner: () => { return this.owner; }
};
Nach dem Login kopieren

oder

var chopper = {
    owner: 'John',
    getOwner: () => (this.owner)
};
Nach dem Login kopieren

Erklärung

Pfeilfunktionen haben bestimmte Eigenschaften Dadurch sind sie für die Verwendung als Objektmethoden ungeeignet.

  • Lexikalisch Geltungsbereich: Pfeilfunktionen erben diesen Wert vom umgebenden lexikalischen Geltungsbereich, nicht vom Objekt, in dem sie definiert sind. Dies bedeutet, dass sich dies innerhalb einer Pfeilfunktion auf den Kontext bezieht, in dem das Objekt definiert wurde, und nicht auf das Objekt selbst.

Wenn Sie also eine Pfeilfunktion innerhalb eines ES6-Objekts definieren, erfolgt dies innerhalb der Funktion bezieht sich auf den Kontext, in dem das Objekt erstellt wurde. Wenn Sie beispielsweise den Objekt-Chopper innerhalb eines globalen Bereichs definieren, bezieht sich dieser innerhalb von getOwner auf den globalen Bereich und nicht auf das Chopper-Objekt.

Lösung

Zu schreiben Objektmethoden in ES6 sollten Sie die traditionelle Funktionssyntax oder die speziell für Objekte entwickelte Kurzmethodensyntax verwenden:

var chopper = {
    owner: 'Zed',
    getOwner: function() {
        return this.owner;
    }
};

// or

var chopper = {
    owner: 'Zed',
    getOwner() {
        return this.owner;
    }
};
Nach dem Login kopieren

Diese Methoden verwenden die Korrigieren Sie diese Bindung, die sich auf das Chopper-Objekt bezieht.

Das obige ist der detaillierte Inhalt vonWarum kann ich in ES6 keine Pfeilfunktionen für Objektmethoden verwenden?. 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