MENU
User defined Iterables
As a generator function returns an iterator, you can conveniently define the [Symbol.iterator] method as a generator function instead.
RESETRUNFULL
<!DOCTYPE html><html><body><script>
class AnimalsList {
constructor (...args){
this.index = -1;
this.animals = args;
}
*[Symbol.iterator](){
while (this.index<this.animals.length-1){
this.index++;
yield this.animals[this.index];
}
}}var myAnimals = new AnimalsList('Brownie','Greenie','Lucky','Spotty');for (let v of myAnimals) console.log(v); // Brownie Greenie Lucky Spotty
</script></body><html>
At the time of writing, Array.prototype.values() is not supported by browsers. In the future, you may do the following instead:
RESETRUNFULL
<!DOCTYPE html><html><body><script>
class AnimalsList {
constructor(...args) {
this.animals = args;
}
*[Symbol.iterator]() { return this.animals.values(); }}
</script></body><html>