Object. assign()
Kopiuje właściwości z jednego lub więcej obiektów do obiektu docelowego.
- Zwraca
- Obiekt docelowy.
- Zmienia oryginał
- Tak
Przykład
#const defaults = { theme: 'dark', sound: true }
const saved = { sound: false }
const settings = Object.assign({}, defaults, saved)
console.log(settings)
console.log({ ...defaults, ...saved })Definicja i zastosowanie
#Metoda Object.assign(target, ...sources) przepisuje własne, wyliczalne właściwości obiektów źródłowych do obiektu docelowego i zwraca ten obiekt. Późniejsze źródła nadpisują wcześniejsze przy powtarzających się kluczach.
Uwaga: obiekt docelowy jest modyfikowany. Żeby utworzyć nowy obiekt, jako cel podaj pusty obiekt: Object.assign({}, a, b). W nowoczesnym kodzie to samo robi składnia { ...a, ...b }.
Kopiowanie jest płytkie. Zagnieżdżone obiekty nie są klonowane, tylko współdzielone. Do głębokiej kopii służy structuredClone().
Składnia
#Object.assign(target, source1, source2, …)Parametry
#target
obiekt
Obiekt, do którego trafią właściwości. Zostanie zmieniony.source1…sourceN
obiekty
Obiekty, z których kopiowane są właściwości.
Więcej przykładów
#const original = { name: 'Ania', stats: { level: 3 } }
const copy = Object.assign({}, original)
copy.stats.level = 10
console.log(original.stats.level)Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Do łączenia obiektów częściej używa się składni
{ ...a, ...b }, która nie mutuje żadnego z nich. - Do kopii z zagnieżdżonymi obiektami użyj
structuredClone().
Powiązane hasła
#- Spread (...)Składnia spread rozkłada tablicę, napis lub obiekt na pojedyncze elementy: do kopiowania, łączenia i przekazywania argumentów.
- structuredClone()Tworzy głęboką kopię wartości, łącznie z zagnieżdżonymi obiektami, datami, Map i Set.
- Object.freeze()Zamraża obiekt, blokując dodawanie, usuwanie i zmianę jego właściwości.
- Object.entries()Zwraca tablicę par [klucz, wartość] obiektu.
Widzisz błąd albo brakuje przykładu? Napisz do nas.