Почему у «оригинального» объекта Map не работает метод next()?
Насколько я знаю, коллекция Map является итерируемым объектом. Т.е. тем объектом, у которого "под капотом" есть ф-ция [Symbol.iterator]. У этой ф-ции в свою очередь есть возвращаемый объект-итератор, который содержит метод next(). Благодаря этому происходит перебор эл-тов в цикле for..of. Например:
let map = new Map([
['йогурт', 300],
['морковь', 10],
['творог', 300]
]);
for(let value of map) {
console.log(value); //['йогурт', 300], ['морковь', 10], ['творог', 300]
}
Почему тогда во втором случае не происходит запуска next()?
const map1 = new Map([
['0', 'foo'],
[1, 'bar']
]);
const iterator1 = map1.entries();
//Первый случай
console.log(iterator1.next().value); //['0', 'foo']
console.log(iterator1.next().value); //[1, 'bar']
//Второй случай
console.log(map1.next().value); //map1.next is not a function
Чем отличается оригинальный объект Map от того, что возвращает встроенный метод entries()?