Javascript 中的迭代:ArrayLike, Symbol.iterator……
Iterable
Symbol.iterator 是个特殊的键,属于 Iterator 规范的一部分。实现了 Iterable 接口的对象是可以用 spread operator 迭代的。
ArrayLike
有 length 属性,且在 [0, length) 范围内都可以访问的对象被称为 ArrayLike 的对象。ArrayLike 的对象可以使用诸如 Array.prototype.slice.call(obj, 2) 的方式来作为 Array 调用。
Array.from 既对 ArrayLike 有效,也对 Iterable 对象有效。
Array 系列方法,比如 map/filter/forEach
需要先转换成 Array。
Array.prototype.slice.call:适用于 ArrayLike,可行时效率最高。Array.from:适用于 ArrayLike 和 Iterable。[...obj]:适用于 Iterable。