Почему у «оригинального» объекта 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()?


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