开发者问题收集

如何修复 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