Pytanie, które mam, najlepiej zadać za pomocą tego jsfiddle , którego kod jest poniżej:
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 );
Co to jest struktura danych f
? Czy to tylko skrót d
?
javascript
ecmascript-6
drmrbrewer
źródło
źródło
d
struktury danych w moim poście?{"a" : 1, "b" : "x", "c" : true }
var a = '{ "a" : "value"}'
->a
przechowuje ciąg, który można deserializować do obiektu za pośrednictwemJSON.parse
.Odpowiedzi:
Jest to skrót właściwości inicjalizatora obiektu w ES6.
var f = {a, b, c, d:1}; // Will be equal to {a:a, b:b, c:c, d:1}
To działa, ponieważ wartość właściwości ma taką samą nazwę jak identyfikator właściwości. Jest to nowy dodatek do składni inicjalizatora obiektu ( sekcja 11.1.5 ) w najnowszej wersji roboczej ECMAScript 6 w wersji 13 . I oczywiście, podobnie jak w przypadku ograniczeń określonych w ECMAScript 3, nie możesz używać zastrzeżonego słowa jako nazwy swojej właściwości.
Taka skrótowość nie zmieni radykalnie twojego kodu, a 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. }
Zapoznaj się z tabelą zgodności, aby uzyskać informacje o obsłudze tych notacji. W środowiskach nieobsługujących te notacje będą prowadzić do błędów składniowych.
Ta skrócona notacja oferuje całkiem dobre dopasowanie obiektów:
W ECMAScript5 co zwykliśmy robić:
var tmp = getData(); var op = tmp.op; var lhs = tmp.lhs; var rhs = tmp.rhs;
Można to zrobić w ECMAScript6 za pomocą jednej linii kodu:
var { op, lhs, rhs } = getData();
źródło
if(a = 1) {...}
jak dopuszczenie prawidłowej składni.(a, b) => {a, b}
. Tak przynajmniej używałem tej samej funkcji wC#
.{id: id, data: data, isSelected: isSelected}
itp. Dzieje się często podczas mapowania obiektów przychodzących na lokalne iz powrotem. W większości przypadków nie chcesz nazywać swoich rzeczy nieco inaczej,{identifier: id, viewData: data, isElementSelected: isSelected }
jest to dokładnie to, o czym mówisz „dziwaczne”, „złożone” i „zagmatwane”.var f = {a, b, c};
Przyszedł z ES6 (ECMAScript 2015) i oznacza dokładnie to samo, co:
var f = {a: a, b: b, c: c};
Nazywa się to skrótami wartości właściwości literału obiektu (lub po prostu skrótem wartości właściwości, skrótowymi właściwościami).
Możesz także łączyć skróty z klasyczną inicjalizacją:
var f = {a: 1, b, c};
Aby uzyskać więcej informacji, zobacz inicjator obiektu .
źródło
var f = {a, b, c}; // <--- what exactly is this??
Definiuje obiekt w JavaScript przy użyciu nowej notacji ECMAScript 2015:
Zgodnie z Mozilla Developer Network :
„Obiekty można zainicjować za pomocą funkcji new Object (), Object.create () lub przy użyciu notacji literału (notacji inicjalizatora). Inicjator obiektu to lista zawierająca zero lub więcej par nazw właściwości i powiązanych wartości obiektu, ujęta w nawiasy klamrowe ({})."
var a = "foo", b = 42, c = {}; // Shorthand property names (ES6) var o = { a, b, c };
jest równa:
var a = "foo", b = 42, c = {}; var o = { a: a, b: b, c: c };
źródło