JavaScriptObiekty i klasy

Object.assign()

Kopiuje właściwości z jednego lub więcej obiektów do obiektu docelowego.

Zwraca
Obiekt docelowy.
Zmienia oryginał
Tak
Na tej stronie

Przykład

#
JavaScript
const defaults = { theme: 'dark', sound: true }
const saved = { sound: false }

const settings = Object.assign({}, defaults, saved)
console.log(settings)
console.log({ ...defaults, ...saved })
Konsola
{ theme: 'dark', sound: false }
{ theme: 'dark', sound: false }

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

#
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

#
Kopia płytka
JavaScript
const original = { name: 'Ania', stats: { level: 3 } }
const copy = Object.assign({}, original)

copy.stats.level = 10
console.log(original.stats.level)
Konsola
10

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

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.