iterator的说明
es6创建了一种新的迭代器
for of 可以遍历使用迭代器
Array Arguments Set Map String TypeArray NodeList 都支持
iterator是对象的一个symbol类型的属性
const arr = [ 'o' , 'r' , 'e' , 'a' ] ;
for ( let i of arr) {
console. log ( i) ;
}
let iterator = arr[ Symbol. iterator] ( ) ;
console. log ( iterator) ;
console. log ( iterator. next ( ) ) ;
console. log ( iterator. next ( ) ) ;
console. log ( iterator. next ( ) ) ;
console. log ( iterator. next ( ) ) ;
自定义迭代器iterator
let arr = [ "zhangsan" , "lisi" , "wangwu" , "zhaoliu" ] ;
arr[ Symbol. iterator] = function ( ) {
let index = 0 ;
let lock = false ;
return {
next : ( ) => {
if ( index < this . length && ! lock) {
index++ ;
return { value : ` 自定义 ${ this [ index- 1 ] } ` , done : lock } ;
} else {
lock = true ;
return { value : undefined , done : lock } ;
}
} ,
} ;
} ;
for ( let i of arr) {
console. log ( i) ;
}
const iterator = arr[ Symbol. iterator] ( ) ;
console. log ( iterator. next ( ) ) ;
console. log ( iterator. next ( ) ) ;
console. log ( iterator. next ( ) ) ;
console. log ( iterator. next ( ) ) ;
console. log ( iterator. next ( ) ) ;
console. log ( iterator. next ( ) ) ;