7 votes

js remplacer l'objet / changer la référence

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' }

3voto

Charles Points 477

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 .

1voto

johirbuet Points 31

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.com

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.

Powered by:

X