它是 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。