Traducción en curso

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

If an iterable's @@iterator method does not return an iterator object, then it is a non-well-formed iterable. Using it as such is likely to result in runtime exceptions or buggy behavior:

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

Especificaciones

Especificaciób Estado Comentario
ECMAScript 2015 (6th Edition, ECMA-262)
La definición de 'Symbol.iterator' en esta especificación.
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
La definición de 'Symbol.iterator' en esta especificación.
Draft  

Compatibilidad en navegadores

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Soporte básico43 Si36 No3010
FeatureAndroid webviewChrome para AndroidEdge mobileFirefox para AndroidOpera AndroidiOS SafariSamsung Internet
Soporte básico Si Si Si36 Si10 Si

Temas relacionados

Etiquetas y colaboradores del documento

Colaboradores en esta página: rderandom, DJphilomath
Última actualización por: rderandom,