Обратите внимание, что когда вы используете индекс позиции (или 0), значения помещаются в массив:
var array = [];
array[0] = "Foo";
array[1] = "Bar";
Это не тот случай, когда вы добавляете неиндексные значения (не 0-9 +):
var array = [];
array[0] = "Foo";
array[1] = "Bar";
array[-1] = "Fizzbuzz";
Значения помещаются в массив только тогда, когда вы играете по правилам. Если вы этого не сделаете, они не будут приняты. Однако они принимаются в самом объекте Array, что относится практически ко всему в JavaScript. Несмотря на то, что ["Foo", "Bar"]это единственные значения в нашем массиве, мы все равно можем получить доступ "Fizzbuzz":
array[-1];
Но еще раз обратите внимание, что это не часть значений массива, поскольку его «индекс» недействителен. Вместо этого он был добавлен в массив как еще один член. Таким же образом мы могли получить доступ к другим членам массива:
array["pop"];
Обратите внимание, что мы обращаемся к popметоду массива, который сообщает нам, что он содержит собственный код. Мы не обращаемся ни к какому значению массива с ключом «pop», а скорее к члену самого объекта массива. Мы можем дополнительно подтвердить это, перебирая публичные члены объекта:
for (var prop in array)
console.log(prop, array[prop]);
Из чего следует следующее:
0 Foo
1 Bar
-1 Fizzbuzz
Так опять же , это на на объекте , но не в в массиве .
Замечательный вопрос! Наверняка заставил меня задуматься.