当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JavaScript Symbol.iterator属性用法及代码示例


它是 Iterables 的一个对象,也是一种广义数组。使任何对象更容易在 for..of 循环中使用的可迭代对象。我们知道数组本质上是迭代的,但除此之外,还有几个对象用于迭代目的。假设任何不是数组但确实拥有一组列表、集合等的对象,那么 for..of 可用于迭代它。

我们使用 for..of 循环来表示任意区间的范围对象。它决定了 for..of 循环的工作范围并迭代循环。

我们将使用 Symbol.iterator 方法(JavaScript 中的内置方法)来迭代上面提到的 range 对象。此方法的用法步骤:

  1. 一旦 for..of 循环开始,它首先检查错误,如果未找到,则访问该方法和具有该方法的对象。
  2. 之后 for..of 循环将运行在对象上。
  3. 要获取下一个即将到来的值,它会调用该输出对象的 next() 方法。
  4. 返回的值将采用 {done:Boolean, value:any} 形式。当 done=true 返回时,循环将被视为完整的循环。

用法:

[Symbol.iterator]

特征:

  • 范围本身不会有 next() 方法。
  • 当我们调用 range[Symbol.iterator]() 时,会形成一个迭代器,方法 next() 将生成用于进一步迭代的值。

例:

Javascript


let range = {
  from:2,
  to:7
};
  
range[Symbol.iterator] = function() {
  
  return {
    now:this.from,
    end:this.to,
    next() {
      if (this.now <= this.end) {
        return { done:false, value:this.now++ };
      } else {
        return { done:true };
      }
    }
  };
};
  
for (let i of range) {
  console.log(i); 
}

输出:

2
3
4
5
6
7

相关用法


注:本文由纯净天空筛选整理自KrishnaKripa大神的英文原创作品 JavaScript Symbol.iterator Property。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。