1.iterator 是接口机制,为不同的数据提供统一的访问机制
//iterator内部机制,ES6已经将这套机制部署到指定的数据类型上了(数组,字符串,arguments, set容器,map容器),可以用for of 去遍历循环了
//模拟指针对象(遍历器对象)
function myIterator(arr) {
let nextIndex = 0; //记录指针的位置
return {//遍历器对象
next: function (){
return nextIndex < arr.length ? {value: arr[nextIndex++], done: false} : {value: undefined, done: true}
}
}
}
//准备一个数据
let arr = [1,4,65,abc];
let iteratorObj = myltertator(arr);
console.log(interatorObj.next())//打印结果:{value: 1 done: false}
console.log(interatorObj.next())//打印结果:{value: 4, done: false{
console.log(interatorObj.next())//打印结果:{value: 65, done: false}
console.log(interatorObj.next())//打印结果:{value: "abc", done: false}
console.log(interatorObj.next())//打印结果:{value: undefined, done: true}
for (let i of arr){
console.log(i)
}
打印结果:
1
4
65
abc
let str = 'abcd';
for (let i of str){
console.log(i)
}
打印结果:
a
b
c
d
function fun (){
for(let i of arguments){
console.log(i)
}
}
fun(1,6,5,'abc');
打印结果:
1
6
5
abc
//报错: obj is not iterable 说明obj是不能被迭代的
网友评论