Javascript 如何调用对myArray[Symbol.iterator]的引用
我不明白以下错误的含义。我要做的是存储对myiteratable[Symbol.iterator]的引用,然后调用它。但是我得到了以下错误Javascript 如何调用对myArray[Symbol.iterator]的引用,javascript,iterator,symbols,Javascript,Iterator,Symbols,我不明白以下错误的含义。我要做的是存储对myiteratable[Symbol.iterator]的引用,然后调用它。但是我得到了以下错误 let str = 'foo'; let gen = str[Symbol.iterator]; console.log(typeof gen); // 'function' let it = gen(); // ERROR: Can't convert undefined to object. 为什么我不能打电话给gen?我
let str = 'foo';
let gen = str[Symbol.iterator];
console.log(typeof gen); // 'function'
let it = gen(); // ERROR: Can't convert undefined to object.
为什么我不能打电话给gen?我意识到我可以通过以下方法解决这个问题:
let gen = function* () {
let it = str[Symbol.iterator]();
for (let n = it.next(); !n.done; n = it.next()) {
yield n.value;
}
}
但是我想了解这里发生了什么。生成器依赖于其调用上下文作为基本对象,这在您的示例中是缺失的。使用
.bind
确保其调用上下文是您的str
:
conststr='foo';
const gen=str[Symbol.iterator].bind(str);
const it=gen();
console.log(it.next())代码>