ES6学习总结是自己在学习过程中的总结,记笔记就是为了督促自己学习和复习,好记性不如烂笔头。如果有错误,感谢指出。
Iterator
不同数据结构有一个相同办法的接口,实现统一的读取方式
Iterator的基本用法
数组已经实现的下面方法,done代表还有下一个循环,true就没有下一个循环
{
let arr=['hello','world'];
let map=arr[Symbol.iterator]();//数组实现了iterator接口
console.log(map.next());
console.log(map.next());
console.log(map.next());
}
实现一个自定义object接口,让objct实现for...of循环
{
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);//输出1,3,2,7,9,8可以证明obj实现了iterator接口可以使用for of
}
}
for...of
实现方式就是不停调用Iterator实现的
网友评论