JavaScript Object.assign ()

O método JavaScript Object.assign () copia todas as propriedades próprias enumeráveis ​​de determinados objetos para um único objeto e o retorna.

A sintaxe do assign()método é:

 Object.assign(target,… sources)

O assign()método, sendo um método estático, é chamado usando o Objectnome da classe.

atribuir () Parâmetros

O assign()método inclui:

  • target - O objeto de destino - ao qual aplicar as propriedades das origens, que é retornado após ser modificado.
  • fontes - O (s) objeto (s) de origem - objetos que contêm as propriedades que você deseja aplicar.

Valor de retorno de assign ()

  • Retorna o objeto de destino.

Nota: As propriedades no objeto de destino são sobrescritas por propriedades nas origens se elas tiverem a mesma chave.

Exemplo 1: usando Object.assign () para clonar e mesclar 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 )

Resultado

 (nome: 'Alan Turing', idade: 120) (nome: 'Alan Turing', idade: 120) (a: 1, b: 12, c: 23)

Observe aqui que se o valor de origem for uma referência a um objeto, ele apenas copia o valor de referência.

Além disso, as propriedades das fontes posteriores substituem as anteriores.

Exemplo 2: usando 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 )

Resultado

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

Como você pode ver, as propriedades na cadeia de protótipo e as propriedades não enumeráveis ​​não podem ser copiadas.

Além disso, os primitivos serão agrupados em objetos, nulos e indefinidos são ignorados.

Visto que apenas strings têm propriedades enumeráveis, elas são copiadas para o objeto de destino.

Leitura recomendada: objeto Javascript defineProperties ()

Artigos interessantes...