具有原生的Iterator 接口的数据结构有 :
- Array ,
- Map ,
- Set ,
- String ,
- TypedArray ,
- arguments对象 ,
- NodeList对象
面我们来实现将class 和 object 也变成迭代的对象
实现的关键就是[Symbol.iterator]
函数 和 next
函数
class添加iterator
class myIterator{
constructor(data){
this.data = data
}
[Symbol.iterator](){
let index = 0
let _this = this
return {
next:function(){
return index<_this.data.length?
{value:_this.data[index++],done:false}:{done:true}
}
}
}
}
let my = new myIterator([1,2,3,4,5,6,7,8])
for(let i of my){
console.log(i);
}
在这里插入代码片
给对象添加 Iterator 接口
let obj = {
data : ['hello','world'],
[Symbol.iterator](){
let index = 0;
let _this = this;
return {
next(){
return index<_this.data.length?
{value:_this.data[index++],done:false}:{done:true}
}
}
}
}
for(let i of obj){
console.log(i);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)