首页 > 解决方案 > 通过 Symbol.iterator 的迭代不会发生

问题描述

Node.js v10.11.0

为什么我的代码中没有发生迭代?

'use strict';
const stuff = Object.create(null)
stuff.items = ['a','b','c','d']
stuff[Symbol.iterator] = function*(){
    return this.items[Symbol.iterator]()
}
for(let n of stuff){
    console.log(n) // It doesn't happen
}

标签: javascriptecmascript-6

解决方案


stuff迭代器设置为迭代items器:

const stuff = Object.create(null)

stuff.items = ['a','b','c','d']

stuff[Symbol.iterator] = stuff.items[Symbol.iterator].bind(stuff.items);

for(let n of stuff){
    console.log(n) // It doesn't happen
}


推荐阅读