Si tratta di un inizializzatore di oggetti Property Shorthand in ES6.
var f = {a, b, c, d:1}; // Will be equal to {a:a, b:b, c:c, d:1}
Questo funziona perché il valore della proprietà ha lo stesso nome dell'identificatore di proprietà. Questa è una nuova aggiunta alla sintassi di inizializzatore oggetto (section 11.1.5) nell'ultimo ECMAScript 6 draft Rev 13. E, naturalmente, proprio come le limitazioni impostate da ECMAScript 3, non è possibile utilizzare una parola riservata come nome della proprietà.
Una simile stenografia non cambierà drasticamente il codice, ma rende tutto un po 'più dolce!
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.
}
Consultare la tabella di compatibilità per il supporto di queste annotazioni. In ambienti non di supporto, queste annotazioni porteranno a errori di sintassi.
queste abbreviazioni offerte Object Notation corrispondenza abbastanza bene:
In ECMAScript5 quello che abbiamo usato per fare:
var tmp = getDate();
var op = tmp.op;
var lhs = tmp.lhs;
var rhs = tmp.rhs;
può essere fatto in ECMAScript6 con una sola riga di codice:
var { op, lhs, rhs } = getData();
Il primo in realtà non è JSON – GolezTrol
[Questo non è l'unica scorciatoia, ci sono un paio di più in ES6] (https://github.com/lukehoban/es6features # enhanced-object-literals) – Kos
OK @GolezTrol non è strettamente JSON perché le chiavi non sono tra virgolette doppie, quindi cosa esattamente * si * si chiama la struttura dati 'd' nel mio post? – drmrbrewer