様々なオブジェクトが Iterator を通した反復をサポートすることを考えたとき、どのオブジェクトに対しても同じ方法で Iterator の取得が行えると便利です。そこで ES6 では Symbol を使い、foo[Symbol.iterator]() として Iterator を取得するように決めました。このようにして Iterator を取得できるオブジェクトを Iterable オブジェクトと呼びます。 Iterator は Iterator プロトコルに沿って next() を実装しているオブジェクトで、 配列などで使われる組み込みの Iterator ジェネレーター関数で生成したジェネレーターオブジェクト 自前で next() を実装したオブジェクト などがあります。実装方法は異なりますが、どれも Iterator です。どれを [Symbol.iterator]() で返して