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
Linda HamiltonOriginal
2025-01-06 01:54:46357Durchsuche

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; }
};
var chopper = {
    owner: 'Zed',
    getOwner() { return this.owner; }
};

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; }
};

oder

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

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;
    }
};

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!

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