Notez que lorsque vous utilisez un index de position (ou 0), les valeurs sont placées dans le tableau :
var array = [];
array[0] = "Foo";
array[1] = "Bar";
// Result: ["Foo", "Bar"]
// Length: 2
Ce n'est pas le cas lorsque vous ajoutez des valeurs non indexées (pas 0-9+) :
var array = [];
array[0] = "Foo";
array[1] = "Bar";
array[-1] = "Fizzbuzz"; // Not a proper array index - kill it
// Result: ["Foo", "Bar"]
// Length: 2
Les valeurs ne sont placées dans le tableau que si vous respectez les règles. Si vous ne le faites pas, elles ne sont pas acceptées. Elles sont cependant acceptées sur l'objet Array lui-même, ce qui est le cas pour à peu près tout en JavaScript. Même si ["Foo", "Bar"]
sont les seules valeurs dans notre tableau, nous pouvons toujours accéder à "Fizzbuzz"
:
array[-1]; // "Fizzbuzz"
Mais notez encore une fois que cela ne fait pas partie des valeurs du tableau, puisque son "index" n'est pas valide. Il a été ajouté au tableau comme un membre supplémentaire. Nous pouvons accéder aux autres membres du tableau de la même manière :
array["pop"]; // function pop() { [native code] }
Notez ici que nous accédons au pop
sur le tableau, ce qui nous informe que celui-ci contient du code natif. Nous n'accédons pas à l'une des valeurs du tableau dont la clé est "pop", mais plutôt à un membre de l'objet tableau lui-même. Nous pouvons confirmer cela en parcourant les membres publics de l'objet :
for (var prop in array)
console.log(prop, array[prop]);
Ce qui donne le résultat suivant :
0 Foo
1 Bar
-1 Fizzbuzz
Donc, encore une fois, c'est sur le site objet mais ce n'est pas le cas. sur le site tableau .
Question géniale ! Ça m'a fait réfléchir à deux fois, c'est sûr.