El símbolo Symbol.iterator
especifica al iterador por defecto de un objeto. Es utilizado por el bucle for
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
El código fuente de este ejemplo interactivo está guardado en un repositorio en GitHub. Si quieres contribuir al proyecto de ejemplos interactivos, por favor clona https://github.com/mdn/interactive-examples y envía un pull request.
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:
Array.prototype[@@iterator]()
TypedArray.prototype[@@iterator]()
String.prototype[@@iterator]()
Map.prototype[@@iterator]()
Set.prototype[@@iterator]()
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
Especificaciób | Estado | Comentario |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La definición de 'Symbol.iterator' en esta especificación. |
Standard | Initial definition. |
ECMAScript (ECMA-262) La definición de 'Symbol.iterator' en esta especificación. |
Living Standard |
Compatibilidad en navegadores
BCD tables only load in the browser