Remplacer un objet javascript avec un autre objet
Au chargement de la page je suis la création de deux Objets Javascript, objDemo1
et objDemo1Backup
où ce dernier est tout simplement une copie exacte de la première.
par exemple
objDemo1 {
sub_1 = { something: 123, somethingElse: 321 },
sub_2 = { something: 456, somethingElse: 654 }
}
Je peux modifier les valeurs dans sub_
ainsi qu'à ajouter /supprimer des sub_
mais le seul objet que je suis l'édition est objDemo1
. c'est à dire je n'ai jamais changer objDemo1Backup
J'ai un bouton de remise à zéro lorsque l'utilisateur clique dessus réinitialiser objDemo1
à ce qu'il était lorsque la page à l'origine chargé (c'est à dire objDemo1 = objDemo1Backup
). C'est là que je vais avoir le problème..
Comment puis-je régler objDemo1
à objDemo1Backup
?
J'ai essayé:
objDemo1 = objDemo1Backup;
et
objDemo1 = null;
var objDemo1 = objDemo1Backup;
...ainsi que des variations similaires mais rien ne semble fonctionner.
Des idées?
- Note: je peux vous confirmer qu'au moment de la réinitialisation,
objDemo1Backup
est exactement la même qu'elle l'était lorsque je l'ai créé etobjDemo1
a changé. - Mon code est vraiment frapper le "reset" de la fonctionnalité, où j'ai essayé de la
objDemo1 = objDemo1Backup
... je n'arrive pas à trouver la syntaxe pour remplacer l'objet.
objDemo1
et objDemo1Backup
pointent vers le même objet, lorsque vous modifiez un, les deux sont modifiées. Cela peut ne pas sembler logique, mais il est le moyen le javascript fonctionne. Google "javascript cloner un objet" pour plus de détails.Vous jouez avec la référence d'objet, pas de clonage. Vous devez cloner votre objet au lieu de l'affecter à l'aide de =
OriginalL'auteur Adam Tomat | 2012-12-18
Vous devez vous connecter pour publier un commentaire.
En JavaScript les objets sont passés par référence, jamais en valeur. Donc:
Pour obtenir une copie, vous devez utiliser une fonction de copie. JavaScript n'est pas un natif, mais ici est un
clone
mise en œuvre: Comment puis-je correctement cloner un objet JavaScript?objDemo = clone(objDemoBackup);
Oui, vous devez cloner de nouveau ou vous vous retrouverez avec une référence 🙂
Bon, à l'aide de
clone()
ai eu de travail.OriginalL'auteur Halcyon
Je suis en utilisant angularjs et il m'a fallu un certain temps pour trouver comment copier un objet à un autre objet. Normalement, vous obtenez une des objets de clone en appelant clone ou ici dans angulaire copie:
Cela vous donne une nouvelle cloné exemple (avec une nouvelle référence) de l'objet source. Mais un rapide coup d'oeil dans la documentation révèle le deuxième paramètre de copie:
De cette façon, vous pouvez remplacer une cible avec des champs et des méthodes de la source et aussi de garder les objets cibles de référence.
angular.copy
pourrait prendre un objet cible. Merci!Il n'y a pas d'AngularJS balise dans cette question.
OriginalL'auteur schmijos