Jest to zadanie polegające na niszczeniu obiektów. Podobnie jak ja, mogłeś uznać to za zaskakujące, ponieważ składnia destrukturyzacji obiektów ES6 wygląda jak, ale NIE zachowuje się jak konstrukcja dosłowna obiektu.
Obsługuje bardzo zwięzłą formę, na którą się natknąłeś, a także zmienia nazwy pól i domyślnych argumentów:
Zasadniczo jest to {oldkeyname: newkeyname = defaultvalue, ...}. „:” NIE jest separatorem klucz / wartość; „=” jest.
Pewnym skutkiem tej decyzji dotyczącej projektowania języka jest to, że być może będziesz musiał zrobić takie rzeczy
; ({a, b} = jakiś_obiekt);
Dodatkowe pareny zapobiegają analizowaniu lewego nawiasu klamrowego jako bloku, a wiodący średnik zapobiega analizowaniu paren jako wywołania funkcji do funkcji z poprzedniego wiersza.
Aby uzyskać więcej informacji, zobacz:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destruifying_assignment
Uwaga, kluczowe błędy podczas przypisywania destrukcji obiektów NIE są zgłaszane; po prostu otrzymujesz wartości „niezdefiniowane”, niezależnie od tego, czy jest to błąd klucza, czy inny błąd, który został po cichu propagowany jako „nieokreślony”.
> var {rsienstr: foo, q: bar} = {p:1, q:undefined};
undefined
> foo
undefined
> bar
undefined
>