Symbol.iterator

El símbolo Symbol.iterator especifica al iterador por defecto de un objeto. Es utilizado por el bucle for.

Atributos de la propiedad Symbol.iterator
Sobrescribir No
Numerable No
Configurable No

Descripción

En cualquier situación donde se necesita iterar un objeto (por ejemplo al inicio de un bucle for..of), su método @@iterator es invocado sin argumentos, y el iterador regresado es utilizador para obtener los valores a iterar.

Algunos tipos integrados cuentan con un comportamiento de iterar por defecto, mientras que otros tipos (como Object) no. Los tipos integrados con un método @@iterator son:

Ver Protocolos de iteración para más información.

Ejemplos

Iterables definidos por el usuario

Podemos definir nuestros propios iterables de la siguiente forma:

var myIterable = {}
myIterable[Symbol.iterator] = function* () {
    yield 1;
    yield 2;
    yield 3;
};
[...myIterable] // [1, 2, 3]

Iterables mal formados

Si un m√©todo iterador @@iterator no devuelve un objeto iterador, es un iterable mal formado. Usarlo como tal es probable que genere excepciones en tiempo de ejecuci√≥n, o comportamientos inesperados.

var nonWellFormedIterable = {}
nonWellFormedIterable[Symbol.iterator] = () => 1
[...nonWellFormedIterable] // TypeError: [] is not a function

Especificaciones

Compatibilidad en navegadores

BCD tables only load in the browser

Temas relacionados