如何修复 javascript 中的“TypeError:无法读取未定义的属性‘length’”[重复]
2019-06-26
515
这是组类的构造函数,其作用类似于集合。
constructor(){
this.list = [];
}
[Symbol.iterator](){
return new GroupIterator(this.list);
}
这应该使组对象可写入,但我找不到错误。
class GroupIterator{
constructor(group){
this.group = group;
this.position = 0;
}
next(){
let result = {
value: undefined,
done: true,
};
if(this.position >= this.group.list.length){
return result;
}
result.value = group.list[this.position];
result.done = false;
this.position++;
return result;
}
}
2个回答
看起来这里有一个小错误,应该是
this.group.length
,而不是
this.group.list.length
,列表名为 group。供参考:
class GroupIterator{
constructor(group){
this.group = group
this.position = 0
}
next() {
let result = {
value: undefined,
done: true,
}
if(this.position >= this.group.length){
return result
}
result.value = this.group[this.position]
result.done = false
this.position++
return result
}
}
Shmish
2019-06-26
由于您的属性名为
group
- 因此没有附加
list
,因为
group
是您传递给构造函数的数组。
if (this.position >= this.group.length) {...}
并确保将
group[this.position]
替换为
this.group[this.position]
。
Jack Bashford
2019-06-26