JavaScript Object.assign ()

El método JavaScript Object.assign () copia todas las propiedades propias enumerables de objetos dados en un solo objeto y lo devuelve.

La sintaxis del assign()método es:

 Object.assign(target,… sources)

El assign()método, al ser un método estático, se llama utilizando el Objectnombre de la clase.

asignar () parámetros

El assign()método incluye:

  • target: el objeto de destino: a qué aplicar las propiedades de las fuentes, que se devuelve después de modificarlo.
  • fuentes: el (los) objeto (s) fuente: objetos que contienen las propiedades que desea aplicar.

Valor de retorno de asignar ()

  • Devuelve el objeto de destino.

Nota: las propiedades del objeto de destino se sobrescriben con las propiedades de las fuentes si tienen la misma clave.

Ejemplo 1: uso de Object.assign () para clonar y fusionar objetos

 // 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 )

Salida

 (nombre: 'Alan Turing', edad: 120) (nombre: 'Alan Turing', edad: 120) (a: 1, b: 12, c: 23)

Tenga en cuenta aquí que si el valor de origen es una referencia a un objeto, solo copia el valor de referencia.

Además, las propiedades de las fuentes posteriores sobrescriben a las anteriores.

Ejemplo 2: uso de 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 )

Salida

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

Como puede ver, las propiedades de la cadena de prototipos y las propiedades no enumerables no se pueden copiar.

Además, las primitivas se ajustarán a los objetos, se ignoran los valores nulos y no definidos.

Dado que solo las cadenas tienen propiedades enumerables, se copian en el objeto de destino.

Lectura recomendada: Objeto JavaScript defineProperties ()

Articulos interesantes...