标签搜索

迭代器[Symbol.iterator]

cicaba
2018-04-13 / 0 评论 / 5 阅读 / 正在检测是否收录...

当需要对一个对象进行迭代时(比如开始用于一个for..of循环中),它的@@iterator方法都会在不传参情况下被调用,返回的迭代器用于获取要迭代的值。
自定义迭代器

let arr [];
arr[Synbol,iterator] = fuction(){
  let i = 0;
  let self = this;
  return {
    next() {
      return { done: self.length - 1 < i, value: self[i++] };
    }
  };
}
for (let v of arr) {
  console.log(v);
}

当执行 for(var i of arr) 的时候,其实是调用了 arr[Symbol.iterator]() 方法,这个方法返回了一个iterator(迭代器)。迭代器有一个next方法,for循环会不断调用这个 arr.next方法来获取下一个值,直到返回值中的 done 属性为true的时候结束循环。

0

评论 (0)

取消