JavaScript Object. assign ()

Metoda JavaScript Object. assign () kopiuje wszystkie wyliczalne właściwości danych obiektów do pojedynczego obiektu i zwraca je.

Składnia assign()metody to:

 Object.assign(target,… sources)

assign()Metoda jest metodą statyczną, nazywa się używając Objectnazwy klasy.

przypisać () Parametry

assign()Sposób odbywa się:

  • target - Obiekt docelowy - do czego zastosować właściwości źródeł, które są zwracane po modyfikacji.
  • źródła - obiekty źródłowe - obiekty zawierające właściwości, które chcesz zastosować.

Wartość zwracana z przypisania ()

  • Zwraca obiekt docelowy.

Uwaga: Właściwości obiektu docelowego są zastępowane przez właściwości w źródłach, jeśli mają ten sam klucz.

Przykład 1: Używanie Object. assign () do klonowania i łączenia obiektów

 // cloning objects const obj = ( name: "Alan Turing", age: 120, ); let newObject = (); const copy = Object.assign(newObject, obj); // modifies the target object console.log(newObject); // returns the modified object console.log(copy); // merging objects const o1 = ( a: 1, b: 2, c: 3 ); const o2 = ( b: 12, c: 13 ); const o3 = ( c: 23 ); // Earlier source keys are overwritten by later sources const o4 = Object.assign((), o1, o2, o3); console.log(o4); // ( a: 1, b: 12, c: 23 )

Wynik

 (imię: `` Alan Turing '', wiek: 120) (imię: `` Alan Turing '', wiek: 120) (a: 1, b: 12, c: 23)

Zauważ tutaj, że jeśli wartość źródłowa jest odniesieniem do obiektu, kopiuje tylko wartość odniesienia.

Ponadto właściwości późniejszych źródeł zastępują wcześniejsze.

Przykład 2: Używanie Object. assign ()

 const obj = Object.create( ( a: 1 ), ( // a is on obj's prototype chain. b: ( value: 2, // b is a non-enumerable property. ), c: ( value: 3, enumerable: true, // c is an own enumerable property. ), ) ); let copy = Object.assign((), obj); console.log(copy); // ( c: 3 ) copy = Object.assign(copy, "abc", 100, null); console.log(copy); // ( '0': 'a', '1': 'b', '2': 'c', c: 3 )

Wynik

 (c: 3) ('0': 'a', '1': 'b', '2': 'c', c: 3)

Jak widać, właściwości łańcucha prototypów i właściwości niewymiernych nie mogą być kopiowane.

Ponadto prymitywy zostaną opakowane w obiekty, a wartości null i undefined zostaną zignorowane.

Ponieważ tylko łańcuchy mają wyliczalną właściwość, są kopiowane do obiektu docelowego.

Zalecana lektura: Obiekt JavaScript defineProperties ()

Interesujące artykuły...