面试题答案
一键面试实现思路
- 创建一个包含数据的对象。
- 在该对象上定义
Symbol.iterator
方法,该方法返回一个迭代器对象。 - 迭代器对象需要有
next
方法,每次调用next
方法返回一个包含value
和done
属性的对象,value
为当前迭代的值,done
表示是否迭代结束。
代码示例
const iterableObject = {
data: [1, 2, 3],
[Symbol.iterator]() {
let index = 0;
return {
next: () => {
if (index < this.data.length) {
return { value: this.data[index++], done: false };
} else {
return { value: undefined, done: true };
}
}
};
}
};
for (const value of iterableObject) {
console.log(value);
}