Object. assign()
Copie les propriétés d’un ou plusieurs objets vers un objet cible.
- Renvoie
- L’objet cible.
- Modifie l’original
- Oui
Exemple
#const defaults = { theme: 'dark', sound: true }
const saved = { sound: false }
const settings = Object.assign({}, defaults, saved)
console.log(settings)
console.log({ ...defaults, ...saved })Définition et utilisation
#La méthode Object.assign(target, ...sources) copie les propriétés propres et énumérables des objets source dans l’objet cible, et renvoie cet objet. Pour les clés qui se répètent, les sources suivantes écrasent les précédentes.
Attention : l’objet cible est modifié. Pour créer un nouvel objet, passez un objet vide comme cible : Object.assign({}, a, b). Dans le code moderne, la syntaxe { ...a, ...b } fait la même chose.
La copie est superficielle. Les objets imbriqués ne sont pas clonés, seulement partagés. Pour une copie profonde, utilisez structuredClone().
Syntaxe
#Object.assign(target, source1, source2, …)Paramètres
#target
objet
L’objet dans lequel les propriétés seront copiées. Il sera modifié.source1…sourceN
objets
Les objets depuis lesquels les propriétés sont copiées.
Plus d’exemples
#const original = { name: 'Léa', stats: { level: 3 } }
const copy = Object.assign({}, original)
copy.stats.level = 10
console.log(original.stats.level)Compatibilité des navigateurs
#Largement disponible
Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.
- Chrome
- Edge
- Firefox
- Safari
Bonnes pratiques
#- Pour fusionner des objets, on utilise aujourd’hui plus souvent la syntaxe
{ ...a, ...b }, qui ne mute aucun des deux. - Pour une copie incluant des objets imbriqués, utilisez
structuredClone().
Entrées associées
#- Spread (...)La syntaxe spread décompose un tableau, une chaîne ou un objet en éléments individuels : pour copier, fusionner et passer des arguments.
- structuredClone()Crée une copie profonde d’une valeur, y compris les objets imbriqués, les dates, les Map et les Set.
- Object.freeze()Gèle un objet, en bloquant l’ajout, la suppression et la modification de ses propriétés.
- Object.entries()Renvoie un tableau des paires [clé, valeur] d’un objet.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.