JavaScript Object.assign ()

La méthode JavaScript Object.assign () copie toutes les propriétés énumérables des objets donnés dans un seul objet et le renvoie.

La syntaxe de la assign()méthode est:

 Object.assign(target,… sources)

La assign()méthode, étant une méthode statique, est appelée en utilisant le Objectnom de la classe.

assign () Paramètres

La assign()méthode prend en compte:

  • target - L'objet cible - à quoi appliquer les propriétés des sources, qui est renvoyé après sa modification.
  • sources - Le ou les objets source - objets contenant les propriétés que vous souhaitez appliquer.

Valeur renvoyée par assign ()

  • Renvoie l'objet cible.

Remarque: les propriétés de l'objet cible sont remplacées par les propriétés des sources si elles ont la même clé.

Exemple 1: Utilisation d'Object.assign () pour cloner et fusionner des objets

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

Production

 (nom: 'Alan Turing', âge: 120) (nom: 'Alan Turing', âge: 120) (a: 1, b: 12, c: 23)

Notez ici que si la valeur source est une référence à un objet, elle ne copie que la valeur de référence.

De plus, les propriétés des sources ultérieures remplacent les précédentes.

Exemple 2: Utilisation d'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 )

Production

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

Comme vous pouvez le voir, les propriétés de la chaîne de prototypes et les propriétés non énumérables ne peuvent pas être copiées.

De plus, les primitives seront encapsulées dans des objets, les valeurs nulles et non définies sont ignorées.

Étant donné que seules les chaînes ont une propriété énumérable, elles sont copiées dans l'objet cible.

Lecture recommandée: Objet Javascript defineProperties ()

Articles intéressants...