如何修复JavaScript中的“ TypeError:无法读取未定义的属性'length'”

时间:2019-06-26 21:24:41

标签: javascript arrays object ecmascript-6

这是组类的构造函数,其作用类似于集合。

    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 个答案:

答案 0 :(得分:0)

好像您在这里有一个小错误,列表应该是encode,而不是this.group.length,列表是命名组。供参考:

this.group.list.length

答案 1 :(得分:0)

因为您的属性称为group-没有附加list,因为group是您传递给构造函数的数组。

if (this.position >= this.group.length) {...}

并确保将group[this.position]替换为this.group[this.position]