Dans JavaScript ES6, si vous voulez copier un objet, vous pouvez utiliser la méthode Object.assign()
. Ce n'est pas Object.copy()
, Object.clone()
, ni Object.duplicate()
comme suggérés par les autres réponses à cette question.
La méthode Object.assign()
prend un certain nombre d'objets comme paramètres et copie les valeurs de toutes les propriétés énumérables de ces objets sources dans l'objet cible. Le premier argument est l'objet cible; tous les arguments suivants sont considérés comme des objets sources.
Voici un exemple de son utilisation :
let obj1 = { a: 1 };
let obj2 = { b: 2 };
let obj3 = { c: 3 };
let combinedObj = Object.assign(obj1, obj2, obj3);
console.log(combinedObj); // Outputs: { a: 1, b: 2, c: 3 }
Dans cet exemple, Object.assign()
combine obj1
, obj2
et obj3
en un nouvel objet combinedObj
. Il est également important de noter qu’Object.assign()
modifie l’objet cible. Dans cet exemple, obj1
est aussi modifié.
console.log(obj1); // Outputs: { a: 1, b: 2, c: 3 }
Notez que Object.assign()
ne créera qu'un clone superficiel et non un clone profond. Si la valeur de la propriété est un objet, la référence à cet objet est copiée plutôt que l'objet lui-même.
Au niveau des bonnes pratiques, il est généralement conseillé d’utiliser un nouvel objet comme cible, pour éviter de modifier les objets sources.
let obj1 = { a: 1 };
let obj2 = { b: 2 };
let obj3 = { c: 3 };
let combinedObj = Object.assign({}, obj1, obj2, obj3);
console.log(combinedObj); // Outputs: { a: 1, b: 2, c: 3 }
console.log(obj1); // Outputs: { a: 1 }
Dans cet exemple, obj1
n’est pas modifié, car {} est utilisé comme objet cible.