iterable object
可迭代对象
一些内置类型是 built-in iterables(内置的可迭代对象),它们具有默认的 iteration behavior,因为它们的 prototype
objects 都实现了 @@iterator
方法,该 key 可以通过常量 Symbol.iterator
获得。比如 String
, Array
, TypedArray
, Map
, Set
, Segments
,比如 arguments
, NodeList
,比如 function*
, async function*
。
每当一个 object 需要被迭代时(比如 for...of
),它的 @@iterator
方法会被调用(不带任何参数),返回的 iterator 用来获取被迭代的值。
1. 日常使用
1.1 用于可迭代对象的操作
1.2 如何判断
2. Iteration protocols
只要遵循一些约定,任何对象都可以实现 Iteration protocols(迭代协议)。
有两种协议:iterable protocol 和 iterator protocol。
iterable protocol,可迭代协议
iterator protocol,迭代器协议
iterable protocol
iterable protocol 允许 JavaScript object 定义或自定义它们的 iteration behavior(迭代行为),例如在 for...of
语句中循环哪些值。
iterator protocol
iterator protocol 定义了一种标准方法,用来生成(有限的或无限的)值序列,可能会返回一个值在生成所有值之后。
当一个 object 实现了具有特定语义的 next()
方法时,它就是一个 iterator。
Last updated