Jest to inicjator obiektów Property Shorthand w ES6.
var f = {a, b, c, d:1}; // Will be equal to {a:a, b:b, c:c, d:1}
Działa to, ponieważ wartość właściwości ma taką samą nazwę jak identyfikator właściwości. Jest to nowe uzupełnienie składni obiektu Object Initialiser (section 11.1.5) w najnowszym ECMAScript 6 draft Rev 13. Oczywiście, podobnie jak ograniczenia ustalone w ECMAScript 3, nie można używać zastrzeżonego słowa jako nazwy właściwości.
Taki skrót nie zmieni radykalnie kodu, tylko sprawi, że wszystko będzie trochę słodsze!
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.
}
Proszę sprawdzić tabelę zgodności, aby uzyskać wsparcie dla tych notacji. W środowiskach nie wspierających te zapisy będą prowadzić do błędów składniowych.
To skrócone oferty Object Notation dopasowania całkiem ładnie:
W ECMAScript5 co zwykliśmy robić:
var tmp = getDate();
var op = tmp.op;
var lhs = tmp.lhs;
var rhs = tmp.rhs;
można zrobić w ECMAScript6 z jednej linii kodu:
var { op, lhs, rhs } = getData();
Pierwszy z nich faktycznie nie jest JSON – GolezTrol
[To nie jest tylko skrótem, istnieje niewiele więcej w ES6] (https://github.com/lukehoban/es6features # enhanced-object-literals) – Kos
OK @GolezTrol to nie jest ściśle JSON, ponieważ klucze nie znajdują się w podwójnych cudzysłowach. Więc co dokładnie mógłbyś nazwać strukturą danych "d" w moim poście? – drmrbrewer