Javascript迭代器不';不行
for()行中出现错误:Javascript迭代器不';不行,javascript,iterator,Javascript,Iterator,for()行中出现错误: 因此,不可能像在PHP中那样将迭代器与我们自己的类一起使用?这不起作用,因为您没有正确地实现iterable协议。要使对象成为iterable,它必须有一个@@iterator键(您有),该键返回一个迭代器,这就是您缺少的迭代器(数组是iterable,但不是迭代器) 但是,由于数组是iterable,因此可以使用其@@iterator属性为其获取iterable。然后你可以把它退回 类列表{ 构造函数(){ 这个数据=[1,2,3]; } [符号.迭代器](){ 返
因此,不可能像在PHP中那样将迭代器与我们自己的类一起使用?这不起作用,因为您没有正确地实现iterable协议。要使对象成为iterable,它必须有一个
@@iterator键(您有),该键返回一个迭代器,这就是您缺少的迭代器(数组是iterable,但不是迭代器)
但是,由于数组是iterable,因此可以使用其@@iterator
属性为其获取iterable。然后你可以把它退回
类列表{
构造函数(){
这个数据=[1,2,3];
}
[符号.迭代器](){
返回此.data[Symbol.iterator]();
}
}
让列表=新列表();
对于(让我列出)
控制台日志(i)代码>这不起作用,因为您没有正确实现iterable协议。要使对象成为iterable,它必须有一个@@iterator键(您有),该键返回一个迭代器,这就是您缺少的迭代器(数组是iterable,但不是迭代器)
但是,由于数组是iterable,因此可以使用其@@iterator
属性为其获取iterable。然后你可以把它退回
类列表{
构造函数(){
这个数据=[1,2,3];
}
[符号.迭代器](){
返回此.data[Symbol.iterator]();
}
}
让列表=新列表();
对于(让我列出)
控制台日志(i)
您可以将对象的[Symbol.iterator]
属性设置为生成器而不是函数,只需使用*
单独生成列表元素即可:
类列表{
构造函数(){
这个数据=[1,2,3];
}
*[符号.迭代器](){
产生*这个数据;
}
}
让列表=新列表();
对于(让我列出){
控制台日志(i);
}
您可以将对象的[Symbol.iterator]
属性设置为生成器而不是函数,只需使用*
单独生成列表元素即可:
类列表{
构造函数(){
这个数据=[1,2,3];
}
*[符号.迭代器](){
产生*这个数据;
}
}
让列表=新列表();
对于(让我列出){
控制台日志(i);
}
我想你需要返回一个迭代器,而不是一个iterable–返回这个.data[Symbol.iterator]()
我用*[Symbol.iterator](){for(让I of this.data)yield I;}
我想你需要返回一个迭代器,而不是iterable–返回这个.data[Symbol.iterator]()
我用修复了它*[Symbol.iterator](){for(让我知道这个.data)产生i;}
啊!忍者!我将删除我的答案。啊!忍者!我将删除我的答案。
class List{
constructor(){
this.data = [1,2,3];
}
[Symbol.iterator](){
return this.data;
}
}
let list = new List();
for(let i of list)
console.log(i);
Uncaught TypeError: undefined is not a function