Comment faire pour réinitialiser ce JS objet?
Ici, je veux réinitialiser toutes les propriétés de Données à leurs valeurs d'origine, comment dois-je procéder?
var Data = {
prop1: false,
prop2: true,
prop3: null
}
Some code executes & sets Data.prop1 = "abc";
Je n'ai jamais instanciée de Données, est-ce un problème?
non, mais c'est un problème de ne pas avoir l' = après des Données. devrait être var Data = {};
Êtes-vous à l'aide d'un constructeur personnalisé pour créer les objets? Si oui, et si les valeurs par défaut sont primitives, vous pourriez mettre les paramètres par défaut sur le
En supposant que le manquant = est une faute de frappe, ce code crée un objet réel, et non pas une sorte de modèle d'objet ou de "classe", de sorte que vous instanciation d'un objet (tout simplement pas dans une classe de base-langage OO sens de l'instanciation).
oups désolé oui le = est une faute de frappe! Merci beaucoup pour vos réponses les gars, j'ai certainement mal compris les objets un petit peu pensé qu'il n'était pas instancié lol...
Êtes-vous à l'aide d'un constructeur personnalisé pour créer les objets? Si oui, et si les valeurs par défaut sont primitives, vous pourriez mettre les paramètres par défaut sur le
prototype
, et puis juste delete
la propriété sur l'instance de "retourner" à sa valeur par défaut.En supposant que le manquant = est une faute de frappe, ce code crée un objet réel, et non pas une sorte de modèle d'objet ou de "classe", de sorte que vous instanciation d'un objet (tout simplement pas dans une classe de base-langage OO sens de l'instanciation).
oups désolé oui le = est une faute de frappe! Merci beaucoup pour vos réponses les gars, j'ai certainement mal compris les objets un petit peu pensé qu'il n'était pas instancié lol...
OriginalL'auteur Baconbeastnz | 2011-12-09
Vous devez vous connecter pour publier un commentaire.
Une autre façon de faire serait celui-ci:
Puis, quand vous l'utilisez, vous appelez
Data.init()
dans votre code d'initialisation pour enregistrer les valeurs actuelles de sorte qu'ils peuvent être restaurés par la suite avecData.reset()
. Ceci a l'avantage que l'entretien est plus facile. Lorsque vous ajoutez ou modifiez une variable de structure de données, il est automatiquement intégré dans la fonction de réinitialisation sans vous avoir à apporter des modifications spécifiques.Vous pouvez le voir à l'œuvre ici: http://jsfiddle.net/jfriend00/EtWfn/.
OriginalL'auteur jfriend00
Data
est undynamic
objet. Vous pouvez simplement ajouter une fonction permettant d'effacer toutes les valeurs:new
, mais dans certains cas, vous pourriez vouloir.merci ........
OriginalL'auteur Halcyon
La manière la plus simple qui évite d'avoir à dupliquer toutes les valeurs par défaut est d'utiliser une approche plus traditionnelle de constructeur et d'instancier votre objet de Données à partir de là. Puis, quand vous avez besoin de réinitialiser vous pouvez simplement jeter vos vieux objets et d'instancier un nouveau.
Remarque: dans le code suivant, j'ai utilisé le JS convention, les fonctions destiné à être utilisé comme objet de constructeurs de commencer avec une lettre majuscule, et la variable fait référence à une instance commence avec minuscules.
Si vous n'aimez pas avoir à utiliser de "nouveau", vous pouvez simplement écrire un non-constructeur de style fonction qui renvoie un objet:
Si, pour quelque raison, vous devez le réinitialiser pour garder le même exemple, plutôt que d'obtenir un nouveau identique, alors vous aurez besoin de changer les propriétés de l'arrière, un par un, comme par Frits van Campen de la réponse (vous auriez également besoin d'ajouter un peu de code pour supprimer toutes les propriétés supplémentaires qui ont été ajoutés en cours de route).
OriginalL'auteur nnnnnn
Une façon plus élégante de la copie des valeurs par défaut sans perdre la référence:
Comme mentionné précédemment, vous avez encore besoin de supprimer les propriétés qui ont été ajoutés plus tard si c'est le cas.
OriginalL'auteur Pietro Coelho
essayer ça:
Data = DataOriginal
ne crée pas de copies d'objets, il laisse simplement les deux variables a souligné le même objet.OriginalL'auteur David Laberge
Semble assez simple. Serait-ce de travailler pour vous?
Je ne le recommande pas. OriginalData et les Données sont référencées sur le même objet. Il ne sera pas réinitialisé rien si OrigianlData n'est jamais référencé à l'autre des objets. D'autre serait de travailler.
OriginalL'auteur Dean Marshall