今天看了一下Symbol.iterator,自己大概的理解就是 可以搭配循环操作 从对象中定义的起始值迭代至定义的结束值,或者以自己需要的节点为结束?
大概例子写的比较简单吧,我不理解的是这期间能做什么呢?或者在实际应用中什么场景会需要这种操作?谢谢
补充一下看到的例子,不理解这样能用来做什么呢
可迭代对象就是为了方便迭代噻
比如 NodeList 就是可迭代对象
for (let image of document.querySelectorAll('img')) {
console.log(image.src)
}
遍历对象我理解,可能我表达的不对,在上面又补充了问题
@SE7EN_96: 这个就是自定义了一个可迭代对象,类似于数组 [1, 2, 3, 4, 5]
Symbol.iterator这玩意就是个接口,你实现了你就有了这个迭代的能力(可以使用for...of访问了)
什么场景使用?
遍历自定义数据结构:当我们定义一些自定义的数据结构,例如树、图等,需要按照特定的顺序遍历其中的元素时,可以使用迭代器对象来实现自定义的迭代行为。
遍历不支持for...of循环的对象:某些对象不支持for...of循环,例如Set和Map等,我们可以使用迭代器对象来遍历其中的元素。
实现自定义的序列生成器:有时我们需要实现一些自定义的序列生成器,例如斐波那契数列、素数序列等,可以使用迭代器对象来生成这些序列。
总之,当我们需要自定义迭代行为时,可以使用迭代器对象来实现。使用迭代器对象可以使我们的代码更加灵活、可扩展,同时也可以提高代码的可读性和可维护性。