Baseline Widely available
El sÃmbolo conocido como Symbol.iterator
especifica el iterador por defecto para un objeto. Utilizado por for...of
.
const iterable1 = {};
iterable1[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
console.log([...iterable1]);
// Expected output: Array [1, 2, 3]
Descripción
Siempre que un objeto necesite ser iterado (como al principio de un bucle for..of
), se llama a su método @@iterator
sin argumentos, y el iterador devuelto se utiliza para obtener los valores a iterar.
Algunos tipos incorporados tienen un comportamiento de iteración por defecto, mientras que otros tipos (como Object
) no lo tienen. Los tipos incorporados con un método @@iterador
son:
Array.prototype[@@iterator]()
TypedArray.prototype[@@iterator]()
String.prototype[@@iterator]()
Map.prototype[@@iterator]()
Set.prototype[@@iterator]()
Véase también Protocolos de iteración para más información.
Sobrescribir No Numerable No Configurable No Ejemplos Iterables definidos por el usuarioPodemos hacer nuestros propios iterables asÃ:
const myIterable = {};
myIterable[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
[...myIterable]; // [1, 2, 3]
O los iterables pueden ser definidos directamente dentro de una clase u objeto usando una propiedad computada:
class Foo {
*[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
}
}
const someObj = {
*[Symbol.iterator]() {
yield "a";
yield "b";
},
};
console.log(...new Foo()); // 1, 2, 3
console.log(...someObj); // 'a', 'b'
Iterables formados incorrectamente
Si el método @@iterator
de un iterable no devuelve un objeto iterador, entonces es un iterable formado incorrectamente. Si se utiliza como tal, es probable que se produzcan excepciones en tiempo de ejecución o un comportamiento erróneo:
const nonWellFormedIterable = {}
nonWellFormedIterable[Symbol.iterator] = () => 1
[...nonWellFormedIterable] // TypeError: [] no es una función
Especificaciones Compatibilidad con navegadores Véase también
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4