La création de nouvelles instances de l'objet dans une boucle
Je suis en train de créer un nouvel objet pour chaque élément dans un tableau en faisant une boucle. Les noms des objets doit être basée sur la clé de la matrice.
Donc pour ce tableau:
var arr = new Array(
"some value",
"some other value",
"a third value"
);
Aboutissent à trois objets:
alert(object1.value);
alert(object2.value);
alert(object3.value);
Le code j'ai à ce jour (mais n'est-ce pas) est de:
//Object
function fooBar(value) {
this.value = value;
...
}
//Loop
var len = arr.length;
for (var i = 0; i < len; i++) {
var objectName = object + i;
var objectName = new fooBar(arr[i]);
}
Fait ce que je vous demande encore un sens?
objectName
est déclarée deux fois.
OriginalL'auteur Phil | 2013-01-05
Vous devez vous connecter pour publier un commentaire.
Vous avez à faire un tableau des objets aussi
OriginalL'auteur u8sand
Vous pouvez mapper vos tableau:
Ensuite, vous pouvez accéder à chaque valeur:
ou d'un processus tout à la fois:
OriginalL'auteur Ted Hopp
Ce que vous allez avoir du bon sens, mais ne devrait pas être la façon dont vous construisez vous JavaScript.
Techniquement, il est un moyen de créer vars avec les noms que vous construire dynamiquement, mais vous ne devriez pas l'utiliser car il est lent, et si les utilisateurs sont en précisant ce qui est dans le tableau, c'est dangereux et la fonctionnalité est nécessaire dans une couple d'années, de sorte que votre vieux trucs pourraient se briser dans le futur.
En attendant, vous pouvez facilement faire quelque chose comme:
Maintenant, vous pouvez appeler
obj.item1; //"two"
Si vous êtes vraiment désespéré, vous pouvez utiliser
window
commeobj
ainsi, lorsque vous écrivez des trucs dans le contexte global, vous pouvez simplement écrireitem0; //"one"
mais ce n'est vraiment pas une bonne idée, pour plusieurs raisons (lisibilité, de la maintenabilité, de la probabilité de l'écrasement de quelqu'un d'autre propriétés, etc).OriginalL'auteur Norguard
Si vous voulez vraiment la variable nommée alors, voici une solution
Si vous ne voulez pas de variables globales
object1
... il suffit de remplacer le mot-cléwindow
avecthis
et il va produire de la variable locale à la portée actuelle.Test ici: http://jsfiddle.net/bukart/F8ham/1/
OriginalL'auteur bukart