/**
* Iterator接口和for...of循环
*
* 介绍:
* 如Array Object Set Map等数据结构,的使用方式各异,而通过Iterator接口
* 致力于统一他们的调用方式,让他们在使用上尽可能的相同,这就是他的功能
*
*/
{ //数组内置的Iterator接口
let arr=['hello','world'];
let map=arr[Symbol.iterator]();
console.log(map.next());
console.log(map.next());
console.log(map.next());
}
{ //自定义Iterator接口
let obj={
start:[1,3,2],
end:[7,9,8],
[Symbol.iterator](){
/**
* 达到的效果(先遍历start,再遍历end)
* @type {obj}
*/
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); //1 3 2 7 9 8
}
}
{ //for...of循环
let arr=['hello','world'];
for(let value of arr){
console.log('value',value);
}
}
014-Iterator接口和for...of循环
最新推荐文章于 2024-04-24 11:29:28 发布