Zwróć uwagę, że gdy używasz indeksu pozycji (lub 0), wartości są umieszczane w tablicy:
var array = [];
array[0] = "Foo";
array[1] = "Bar";
Nie dzieje się tak, gdy dodajesz wartości bez indeksu (nie 0-9 +):
var array = [];
array[0] = "Foo";
array[1] = "Bar";
array[-1] = "Fizzbuzz";
Wartości są umieszczane w tablicy tylko wtedy, gdy grasz zgodnie z zasadami. Jeśli tego nie zrobisz, nie zostaną zaakceptowani. Są jednak akceptowane w samym obiekcie Array, co ma miejsce w przypadku prawie wszystkiego w JavaScript. Mimo że ["Foo", "Bar"]są to jedyne wartości w naszej tablicy, nadal możemy uzyskać dostęp "Fizzbuzz":
array[-1];
Ale zauważ jeszcze raz, że nie jest to część wartości tablicy, ponieważ jej „indeks” jest nieprawidłowy. Zamiast tego został dodany do tablicy jako kolejny element członkowski. Moglibyśmy uzyskać dostęp do innych elementów tablicy w ten sam sposób:
array["pop"];
Zauważ tutaj, że uzyskujemy dostęp do popmetody w tablicy, która informuje nas, że zawiera kod natywny. Nie uzyskujemy dostępu do żadnej z wartości tablicy za pomocą klucza „pop”, ale raczej do elementu członkowskiego samego obiektu tablicy. Możemy to dodatkowo potwierdzić, jadąc na rowerze po publicznych członkach obiektu:
for (var prop in array)
console.log(prop, array[prop]);
Który wypluwa:
0 Foo
1 Bar
-1 Fizzbuzz
Więc jeszcze raz, to na tym obiekcie , ale to nie jest w tej tablicy .
Świetne pytanie! Na pewno sprawiło, że zrobiłem podwójną próbę.