iterator迭代,做的跟java集合迭代差不多就行了
示例图
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>对象遍历重写iterator接口1</h1>
</body>
<script>
let arr = [1,2,3,4,5,6,7,8,9];
console.log(arr);
//for of 底层调用的是 Symbol(Symbol.iterator)
for(let i of arr){
console.log(i);
}
console.log('%c-------------------------------------------------------','color:red');
//初步重写Symbol(Symbol.iterator)
function iteratorUtil(target){
let index = -1;
return {
next(){
let len = target.length;
index++;
return index < len ? {value:target[index],hasNext:true}:{value:target[index],hasNext:false};
}
};
}
let arr1 = [1,2,3,4];
let iterator = iteratorUtil(arr1);
console.log( iterator.next()); //{value: 1, hasNext: true}
console.log( iterator.next()); //{value: 2, hasNext: true}
console.log( iterator.next()); //{value: 3, hasNext: true}
console.log( iterator.next()); //{value: 4, hasNext: true}
console.log( iterator.next()); //{value: undefined, hasNext: false}
console.log('%c------------------------------------------------------','color:red');
let arr2 = [4,3,2,1];
let iterator2 = iteratorUtil(arr2);
let item;
while( (item = iterator2.next()).hasNext){
console.log(item);
}
</script>
</html>