Iterator

什么是 Iterator

  • Iterator 是迭代器,规定了数据类型的遍历 for of
  • 如果一个数据类型实现了  Iterator ,那么这个数据类型就可以使用for of遍历
  • 如果一个数据类型实现了 Iterator ,那么这个对象上就会有一个   Symbol.iterator  属性
  1. let arr = [1, 2, 3];
    console.log(arr[Symbol.iterator]); // [Function: values]
  2.  Symbol.iterator 是一个函数,执行该函数会返回一个可迭代对象   let it = arr[Symbol.iterator]() 
  3. 可迭代对象有一个 next 方法,执行这个方法会返回一个对象给我们  console.log(it.next()); // { value: 1, done: false } 
  • Array 、String 等这些数据类型已经实现了 Iterator ,可以使用for of 遍历

Iterator基本使用

  • 默认一个对象没有实现 Iterator ,无法通过  for of  遍历
1 let obj = {
2   name: 'zhangsan',
3   age: 66,
4 }
5 for (let value of obj) {
6   console.log(value); // TypeError: obj is not iterable
7 }
  • 实现该对象的 Iterator 
let obj = {
  name: 'zhangsan',
  age: 66,
  [Symbol.iterator]() {
    let index = 0;
    let that = this; 
    return { // 返回一个可迭代对象
      next() {
        if (index < Object.keys(that).length) {
          return {value: that[Object.keys(that)[index++]], done: false}
        } else {
          return {value: undefined, done: true}
        }
      }
    }
  }
}

 

posted @ 2021-11-20 23:52  霸哥yyds  阅读(152)  评论(0)    收藏  举报