ES6-Eigenschaftsordnung: Ist sie für alle Vorgänge garantiert?
Problem:
ES6 führt die Eigenschaftsreihenfolge für Objekte ein. Aber garantiert diese neue Funktion eine genau definierte Reihenfolge für alle Objekteigenschaften-Aufzählungsvorgänge, wie z. B. For-In-Schleifen und Object.keys?
Antwort für ES2015-ES2019:
Nein, nicht für alle Operationen.
Für For-In-Schleifen: Object.keys und JSON.stringify erfordert ES6 keine bestimmte Reihenfolge der Aufzählung. Bedenken hinsichtlich der Legacy-Kompatibilität haben diese Entscheidung beeinflusst.
Für [[Enumerate]], das von For-In-Schleifen verwendet wird, ist die Reihenfolge der Aufzählung nicht angegeben. Object.keys erbt dieses Verhalten ebenfalls.
Hinweis: ES2020 hat dieses Verhalten später geändert, sodass auch ältere Vorgänge der Eigenschaftsreihenfolge folgen müssen.
Andere Vorgänge und Eigenschaften Reihenfolge:
Während die oben genannten Operationen keine definierte Aufzählungsreihenfolge haben, halten sich andere Operationen an die Eigenschaftsreihenfolge. Dazu gehören:
Für diese Vorgänge ist die Reihenfolge wie folgt folgt:
Ausnahme: Exotische Objekte wie Proxies können die [[OwnPropertyKeys]] überschreiben. interne Methoden- und Rückgabeschlüssel in einer anderen Reihenfolge.
Das obige ist der detaillierte Inhalt vonGarantiert ES6 eine konsistente Eigenschaftsreihenfolge über alle Objektaufzählungsvorgänge hinweg?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!