Es ist ein Objektinitialisierer Property Shorthand in ES6.
var f = {a, b, c, d:1}; // Will be equal to {a:a, b:b, c:c, d:1}
Dies funktioniert, weil der Eigenschaftswert denselben Namen wie die Eigenschaftskennung hat. Dies ist eine neue Ergänzung zur Syntax Object Initialiser (section 11.1.5) in der neuesten ECMAScript 6 draft Rev 13. Und genau wie die Einschränkungen, die in ECMAScript 3 festgelegt wurden, können Sie ein reserviertes Wort nicht als Ihren Eigenschaftsnamen verwenden.
Eine solche Kurzschrift ändert Ihren Code nicht dramatisch, sondern macht alles nur noch süßer!
function createCar(name, brand, speed) {
return { type: 'Car', name: name, brand: brand, speed: speed };
}
// With the new shorthand form
function createSweetCar(name, brand, speed) {
return { type: 'Car', name, brand, speed }; // Yes it looks sweet.
}
Bitte beachten Sie die Kompatibilitätstabelle für diese Bezeichnungen für die Unterstützung. In nicht unterstützenden Umgebungen führen diese Notationen zu Syntaxfehlern.
Diese Kurzschreibweise bietet Objekt passende recht schön:
In ECMAScript5, was wir zu tun pflegten:
var tmp = getDate();
var op = tmp.op;
var lhs = tmp.lhs;
var rhs = tmp.rhs;
Kann in ECMAScript6 mit einer einzigen Codezeile erfolgen:
var { op, lhs, rhs } = getData();
Die erste ist eigentlich nicht JSON – GolezTrol
[Das ist nicht die einzige Stenografie, gibt es ein paar mehr in ES6] (https://github.com /lukehoban/es6features # enhanced-object-literals) – Kos
OK @GolezTrol es ist nicht genau JSON, weil die Schlüssel nicht in Anführungszeichen stehen Also, was genau würdest du die 'd' Datenstruktur in meinem Post nennen? – drmrbrewer