É uma abreviação de propriedade do inicializador de objeto no ES6.
var f = {a, b, c, d:1}; // Will be equal to {a:a, b:b, c:c, d:1}
Isso funciona porque o valor da propriedade tem o mesmo nome que o identificador da propriedade. Esta é uma nova adição à sintaxe do Object Initialiser ( seção 11.1.5 ) no último ECMAScript 6 draft Rev 13 . E, claro, assim como as limitações definidas no ECMAScript 3, você não pode usar uma palavra reservada como nome de propriedade.
Tal atalho não mudará drasticamente o seu código, apenas torna tudo um pouco mais agradável!
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.
}
Consulte a tabela de compatibilidade para obter suporte para essas notações. Em ambientes sem suporte, essas notações levarão a erros de sintaxe.
Esta notação abreviada oferece uma correspondência de objetos muito bem:
Em ECMAScript5, o que costumávamos fazer:
var tmp = getData();
var op = tmp.op;
var lhs = tmp.lhs;
var rhs = tmp.rhs;
Pode ser feito em ECMAScript6 com uma única linha de código:
var { op, lhs, rhs } = getData();