當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。