Die Frage, die ich habe, wird am besten über diese jsfiddle gestellt , deren Code unten steht:
var a = 1, b = 'x', c = true;
var d = {a: a, b: b, c: c}; // <--- object literal
var e = [a, b, c]; // <--- array
var f = {a, b, c}; // <--- what exactly is this??
// these all give the same output:
alert(d.a + ', ' + d.b + ', ' + d.c );
alert(e[0] + ', ' + e[1] + ', ' + e[2]);
alert(f.a + ', ' + f.b + ', ' + f.c );
Was ist eine Datenstruktur f
? Ist es nur eine Abkürzung für d
?
javascript
ecmascript-6
drmrbrewer
quelle
quelle
d
Datenstruktur in meinem Beitrag nennen?{"a" : 1, "b" : "x", "c" : true }
var a = '{ "a" : "value"}'
->a
enthält eine Zeichenfolge, die über über ein Objekt deserialisiert werden kannJSON.parse
.Antworten:
Es ist eine Kurzform der Objektinitialisierer- Eigenschaft in ES6.
Dies funktioniert, weil der Eigenschaftswert denselben Namen wie die Eigenschaftskennung hat. Dies ist eine neue Ergänzung der Syntax von Object Initialiser ( Abschnitt 11.1.5 ) im neuesten ECMAScript 6-Entwurf Rev. 13 . Und genau wie die in ECMAScript 3 festgelegten Einschränkungen können Sie natürlich kein reserviertes Wort als Eigenschaftsnamen verwenden.
Eine solche Abkürzung ändert Ihren Code nicht dramatisch, sondern macht alles nur ein bisschen süßer!
Informationen zur Unterstützung dieser Notationen finden Sie in der Kompatibilitätstabelle. In nicht unterstützenden Umgebungen führen diese Notationen zu Syntaxfehlern.
Diese Kurzschreibweise bietet eine recht gute Objektübereinstimmung:
In ECMAScript5 haben wir Folgendes getan:
Kann in ECMAScript6 mit einer einzigen Codezeile ausgeführt werden:
quelle
if(a = 1) {...}
gültigen Syntax.(a, b) => {a, b}
. Zumindest habe ich so die gleiche Funktion verwendetC#
.{id: id, data: data, isSelected: isSelected}
usw. übereinstimmt . Dies geschieht häufig, wenn Objekte, die in lokale Objekte eingehen, und dann zurück zugeordnet werden. In den meisten Fällen möchten Sie Ihre Inhalte nicht etwas anders benennen{identifier: id, viewData: data, isElementSelected: isSelected }
, wenn Sie genau über "schrullig", "komplex" und "verwirrend" sprechen.Es wurde mit ES6 (ECMAScript 2015) geliefert und bedeutet genau das Gleiche wie:
Es wird als Object Literal Property Value Shorthands (oder einfach als Property Value Shorthand, Shorthand Properties) bezeichnet.
Sie können auch Kurzschriften mit klassischer Initialisierung kombinieren:
Weitere Informationen finden Sie unter Objektinitialisierer .
quelle
Es definiert ein Objekt in JavaScript mit der neuen ECMAScript 2015-Notation:
Gemäß Mozilla Developer Network :
"Objekte können mit new Object (), Object.create () oder mit der Literalnotation (Initialisierungsnotation) initialisiert werden. Ein Objektinitialisierer ist eine Liste von null oder mehr Paaren von Eigenschaftsnamen und zugehörigen Werten eines Objekts, die in eingeschlossen sind Geschweifte Klammern ({})."
ist äquivalent zu:
quelle