J'ai un objet que je veux remplacer. -->
var obj1 = { x: 'a' };
var ref = obj1;
var obj2 = { y: 'b' };
obj1 = obj2;
résulte en
ref = { x: 'a' }
mais je veux qu'il soit aussi modifié pour pointer vers obj2 pour obtenir
ref = { y: 'b' }
J'ai un objet que je veux remplacer. -->
var obj1 = { x: 'a' };
var ref = obj1;
var obj2 = { y: 'b' };
obj1 = obj2;
résulte en
ref = { x: 'a' }
mais je veux qu'il soit aussi modifié pour pointer vers obj2 pour obtenir
ref = { y: 'b' }
Pas possible. JS passe les objets par une copie de la référence, donc dans l'étape var ref = obj1
vous n'assignez pas réellement un pointeur de référence comme vous le feriez dans un langage comme le C. Au lieu de cela, vous créez une copie d'une référence qui pointe vers un objet ressemblant à {x: 'a'}
.
Voir cette réponse pour les autres options dont vous disposez : https://stackoverflow.com/a/17382443/6415214 .
Vous pouvez essayer de changer tous les champs de l'obj1 avec les champs de l'obj2.
var obj1 = { x: 'a' };
var ref = obj1;
var obj2 = { y: 'b' };
obj1.x = obj2.y;
console.log(ref) // Print {x, 'b'}
Si vous voulez ajouter {y, 'b'}, vous pouvez suivre la démarche suivante
obj1.y=obj2.y
console.log(obj1); prints {x: "b", y: "b"}
console.log(ref); prints {x: "b", y: "b"}
Si vous voulez plutôt supprimer obj1.x vous pouvez faire quelque chose comme ceci
delete obj1.x;
console.log(ref) prints {y:'b'}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.