1 回答
TA贡献1804条经验 获得超8个赞
current不是变量,它是属性,因此您需要将其引用为this.current.
但是,您还有另一个问题this:
在this.length和中this[a],this对象不是arrayLikeObject,而是具有方法的对象next()。
你也可以解决这个问题,但我认为走另一条路更简单,做next一个箭头函数。这样this.length,this[a]将按预期工作。current在闭包中创建一个普通变量:
var arrayLikeObject = {
0: "hello",
1: "there",
2: "crappy coder",
length: 3,
}
arrayLikeObject[Symbol.iterator] = function(){
let current = 0;
return {
next: () => {
if(current < this.length) {
return {done: false, value: this[current++]};
}
else {
return {done: true};
}
}
};
};
console.log("after making it iterable: ==============");
for(let str of arrayLikeObject) {
console.log(str);
}
添加回答
举报