2017-04-03 18 views
7

Przeglądając dokumentację ES6, zauważyłem, że zaleca się stosowanie składni rozłożonej w bardziej szczegółowej metodzie Object.assign(). Ale jestem nieco zdezorientowany, jak to się dzieje.W jaki sposób {... obiekt, właściwość: wartość} działa ze składnią rozproszoną?

Czy object jest w tym przypadku podzielona na pary: key: value, po której właściwość po prawej stronie przecinka jest dodana lub zastąpiona, a następnie ponownie złożona?

+0

Przeczytaj ten http://stackoverflow.com/a/41615569/7404943 – barbsan

+0

to wszystko w pigułce –

+1

pewno nie czyta * ES6 * dokumenty - rozproszenie obiektów jest nadal propozycją eksperymentalną. Co czytałeś? Połącz to. – Bergi

Odpowiedz

3

Czy przedmiot w tej sprawie są podzielone na klucz: par wartości, po jakiej nieruchomość na prawo od przecinka jest dodawana lub nadpisane, a ostatecznie jest ponownie zmontowany?

pary klucz-wartość oryginalnego obiektu object są rzeczywiście stosowane w kombinacji (przejmująca) z nowego obiektu, który ma dodatkową właściwość var2 (są one coraz połączone newObject).

Możesz myśleć o tym, że object staje się podzbiorem newObject w miejscu, gdzie używana jest składnia rozłożona, a właściwości z tym samym kluczem są nadpisywane.

Sprawdź poniższy przykład:

const object = { txt: 'Test' }; 
 
const newObject = {...object, var2: 'aa' }; 
 

 
// logs Object {txt: "Test", var2: "aa"} 
 
console.log(newObject); 
 

 
const object2 = { txt: 'Test' }; 
 
const newObject2 = {...object, txt: 'Test2', var2: 'aa' }; 
 

 
// Object {txt: "Test2", var2: "aa"} 
 
console.log(newObject2); 
 

 
// merging all objects to a new object 
 
var object3 = {first: 'Hello', second: 'World'}; 
 
var newObject3 = {...object, anotherVar: 'stack', ...object2, ...object3}; 
 

 
// Object {txt: "Test", anotherVar: "stack", first: "Hello", second: "World"} 
 
console.log(newObject3);

Powiązane problemy