Generator与Iterator
任意一个对象的Symbol.iterator方法都等于该对象的遍历器生成函数,而调用这个函数就会生成遍历器对象。由于Generator就是一个遍历器生成函数,所以将Generator函数赋值给对象的Symbol.iterator,就可以使对象支持Iterator了。
let iterable = {}
iterable[Symbol.iterator] = function* () {
yield 1
yield 2
}
[...iterable]
generator函数执行后返回一个遍历器对象,这个对象也有Symbol.iterator属性,调用后返回它自己
function* funcaa() {
yield 1
}
let a = funcaa()
a[Symbol.iterator]() === funcaa