实现了__iterator__()方法,这个方法返回一个迭代器对象,迭代器对象要求实现next()方法,当next完结时,发抛出StopIteration异常,那么就可以用在for/in结构中,for/in循环自行处理Iterator()函数的调用及异常的处理。当然,也可以手动调用Iterator()函数来自行进行处理。
当对象没有实现__iterator__()方法时,Iterator()函数返回一个内部实现的迭代器对象,这个迭代器能够对自身的属性进行迭代。
Javascript还引入了yield(关键字),使用yield的函数称为生成器函数,生成器函数通过yield返回值(所以也规定了它不能够通过return返回值,这也是其特殊之处)。按照语法规定,生成器函数的调用,返回的是一个生成器,生成器对象的next()方法返回yield出来的值,并且下次调用能够恢复生成器函数的执行,直到函数再次yield。