2010-12-12 7 views

Répondre

5
this.Hats[ "Red" ] = new Hat(oPar, "red") 
    this.Hats[ "Yellow" ] = new Hat(oPar, "yellow"); 

C'est où votre problème est. Vous n'utilisez pas le tableau en tant que tableau, vous l'utilisez simplement en tant qu'objet, en définissant les propriétés Hats.Red et Hats.Yellow au lieu de remplir les index du tableau.

Essayez ceci:

this.Hats.push(new Hat(oPar, "red")); 
    this.Hats.push(new Hat(oPar, "yellow")); 

The push function in javascript

+0

Merci, est-il impossible d'utiliser une chaîne comme index de tableau? – dab

+0

Vous pouvez utiliser un tableau comme dictionnaire en affectant des éléments avec des index de chaîne. Cela n'affectera pas la propriété length du tableau, mais vous pouvez obtenir la longueur de toutes les clés du dictionnaire en utilisant l'une de ces méthodes. http://stackoverflow.com/questions/5223/length-of-javascript-associative-array –

+0

Si vous allez faire cela, vous ne devriez même pas utiliser un tableau ([]) ... il suffit d'utiliser un objet ({}). Les objets JavaScript sont des dictionnaires. Vous n'obtenez pas de méthodes de tableau avec eux, mais vous obtenez des clés de chaîne. Cela ressemble à ce que vous voulez. – Zach

1

Vous utilisez un tableau associatif. Ce type de tableau vous permet de définir une clé pour chaque membre du tableau. Utiliser un tableau de cette façon signifie qu'il n'y a pas de valeur d'index sur laquelle vous pouvez traverser les membres, vous pouvez utiliser for (var i in object).

for (var key in test.People["Fred"].Hats) { 
    console.log(key); 
}