它是 Iterables 的一個對象,也是一種廣義數組。使任何對象更容易在 for..of 循環中使用的可迭代對象。我們知道數組本質上是迭代的,但除此之外,還有幾個對象用於迭代目的。假設任何不是數組但確實擁有一組列表、集合等的對象,那麽 for..of 可用於迭代它。
我們使用 for..of 循環來表示任意區間的範圍對象。它決定了 for..of 循環的工作範圍並迭代循環。
我們將使用 Symbol.iterator 方法(JavaScript 中的內置方法)來迭代上麵提到的 range 對象。此方法的用法步驟:
- 一旦 for..of 循環開始,它首先檢查錯誤,如果未找到,則訪問該方法和具有該方法的對象。
- 之後 for..of 循環將運行在對象上。
- 要獲取下一個即將到來的值,它會調用該輸出對象的 next() 方法。
- 返回的值將采用 {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
相關用法
- Javascript Math.LOG10E用法及代碼示例
- Javascript Math.LOG2E用法及代碼示例
- Javascript Math.LN10用法及代碼示例
- Javascript Math.SQRT1_2用法及代碼示例
- Javascript Math.PI用法及代碼示例
- Javascript Math.SQRT2用法及代碼示例
注:本文由純淨天空篩選整理自KrishnaKripa大神的英文原創作品 JavaScript Symbol.iterator Property。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。