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);
}
添加回答
舉報