Зверніть увагу, що коли ви використовуєте індекс позиції (або 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
Так знову ж , це на на об'єкті , але не в в масиві .
Чудове запитання! Змусив мене зробити подвійний знімок напевно.