Notare che quando si utilizza un indice di posizione (o 0), i valori vengono inseriti all'interno della matrice:
var array = [];
array[0] = "Foo";
array[1] = "Bar";
Questo non è il caso quando aggiungi valori non di indice (non 0-9 +):
var array = [];
array[0] = "Foo";
array[1] = "Bar";
array[-1] = "Fizzbuzz";
I valori vengono inseriti nella matrice solo quando si gioca secondo le regole. Quando non lo fai, non vengono accettati. Tuttavia, sono accettati sull'oggetto Array stesso, come nel caso di qualsiasi cosa in JavaScript. Anche se ["Foo", "Bar"]sono gli unici valori nel nostro array, possiamo comunque accedere a "Fizzbuzz":
array[-1];
Ma nota ancora che questo non fa parte dei valori dell'array, poiché il suo "indice" non è valido. È stato invece aggiunto all'array come un altro membro. Potremmo accedere ad altri membri dell'array nello stesso modo:
array["pop"];
Nota qui che stiamo accedendo al popmetodo sull'array, che ci informa che questo contiene codice nativo. Non stiamo accedendo a nessuno dei valori dell'array con una chiave "pop", ma piuttosto un membro sull'oggetto dell'array stesso. Possiamo ulteriormente confermarlo passando in rassegna i membri pubblici dell'oggetto:
for (var prop in array)
console.log(prop, array[prop]);
Che sputa quanto segue:
0 Foo
1 Bar
-1 Fizzbuzz
Quindi, di nuovo, è il l' oggetto , ma non è nella matrice .
Domanda fantastica! Mi ha indotto a fare un doppio tentativo di sicuro.