Nadpisywanie domyślnych wartości obiektu z użyciem object spread w JavaScript

Good to know

2 Likes

O, wygodny sposób na robienie shallow merge/Object.assign. Trzeba pamiętać, że to robi tylko płytkie nadpisanie:

> const overrides = {map: {a: "A", b: "B"}}
undefined
> {map: {c: "C"}, ...overrides}
{ map: { a: 'A', b: 'B' } }
2 Likes

Yep, dla twojego przykłady nie da się zrobić coś na wzór deep merge z uwagi na powtórzony klucz map w obu obiektach. Warte zapamiętania że finalny obiekt będzie zawierał w przypadku powtórzonych kluczy tylko ostatnie wystąpienie (skrajnie prawy obiekt) przy sklejeniu obiektów:

const obj = {map: {a: "A", b: "B"}, a: 1}
const obj2 = {map: {c: "C"}, b: 2}

> {...obj, ...obj2}
{ map: { c: 'C' }, a: 1, b: 2 }

> {...obj2, ...obj}
{ map: { a: 'A', b: 'B' }, b: 2, a: 1 }
1 Like