實現(xiàn)了__iterator__()方法,這個方法返回一個迭代器對象,迭代器對象要求實現(xiàn)next()方法,當next完結時,發(fā)拋出StopIteration異常,那么就可以用在for/in結構中,for/in循環(huán)自行處理Iterator()函數(shù)的調用及異常的處理。當然,也可以手動調用Iterator()函數(shù)來自行進行處理。
當對象沒有實現(xiàn)__iterator__()方法時,Iterator()函數(shù)返回一個內部實現(xiàn)的迭代器對象,這個迭代器能夠對自身的屬性進行迭代。
Javascript還引入了yield(關鍵字),使用yield的函數(shù)稱為生成器函數(shù),生成器函數(shù)通過yield返回值(所以也規(guī)定了它不能夠通過return返回值,這也是其特殊之處)。按照語法規(guī)定,生成器函數(shù)的調用,返回的是一個生成器,生成器對象的next()方法返回yield出來的值,并且下次調用能夠恢復生成器函數(shù)的執(zhí)行,直到函數(shù)再次yield。