Como o loop `for..of` resolve o iterador de um objeto?
Para que um objeto implemente interface iterável, ele deve implementar[Symbol.iterator]
tecla que aponta para uma função que retorna oiterator
. Eu estou querendo saber se ofor..of
loop internamente chama esse método em um objeto para obter esseiterator
?
A razão pela qual estou curioso é que, por exemplo,Map
define uma interface com vários iteradores (entradas, valores, chaves) e parece que se não for especificado explicitamente ofor..of
loop usa o iterador retornado pormap.entries()
ligar.
Estou tentando pesquisarna especificação mas apenas especifica queiterator
é passado como um parâmetro para a operação abstrataForOf
:
A operação abstrata ForIn / OfBodyEvaluation é chamada com argumentos lhs, stmt,iterador, iterationKind, lhsKind e labelSet.
Então, basicamente, duas perguntas:
Como o iterador é obtido de um objeto?Onde é especificado na especificação?