es6新增的iterator可以为任何需要遍历的对象提供了实现方法,只要按要求提供next方法:
let obj = {
start: [1,3,2],
end: [7,9,8],
[Symbol.iterator]() {
let self=this;
let index = 0;
let arr=self.start.concat(self.end);
let len = arr.length;
return {
next() {
if (index < len) {
return {
value: arr[index++],
done: false
}
} else {
return {
value: arr[index++],
done: true
}
}
}
}
}
}
for (let key of obj) {
console.log(key);
}