Метод item() не работает

Начинаю изучать JavaScript по книге Дакетта от издания 2017 года. В разделе про массивы там указано следующее:

Отрывок из книги про извлечение данных из массива

Пытаюсь воспроизвести этот код на странице, но получаю следующую ошибку:

Uncaught TypeError: colors.item is not a function at test.js:3:27

Интересно, что если посмотреть на этот пример в файлах, которые идут к дополнению к книге, то можно увидеть немного другой код, который уже работает:

var colors = new Array('белый', 'черный', 'пользовательский');
var el = document.getElementById('colors');
el.textContent = colors[0];

Вопрос следующий: почему не работает метод item() из примера из книги?


Ответы (2 шт):

Автор решения: LIMPIX64

У массива(Array) нет метода item. Чтобы получить, например 3 элемент массива, вы можете воспользоваться литералом массива [2] или методом at(2) (Только в последней версии ES2022)

var colors = new Array('белый', 'черный', 'пользовательский');
document.getElementById('colorWithArrayLiteral').textContent = colors[1];
document.getElementById('colorWithAt').textContent = colors.at(2);
<div id="colorWithArrayLiteral"></div>
<div id="colorWithAt"></div>

→ Ссылка
Автор решения: Алексей Шиманский

Текст в книги и правильный и неправильный одновременно. Првильно то, что метод item есть. Но имеется он не у массивов, а у коллекций (объекты, ведущие себя подобно массиву), например

NodeList и HTMLCollection

А неправильно то, что автор, видимо, путает массивы и коллекции.


Может быть до 2017 у массивов были эти методы (не смог найти инфу). Сейчас это точно не так.

→ Ссылка