an iterator is any object which implements the Iterator protocol by having a next() method that returns an object with two properties:
valueThe next value in the iteration sequence.
doneThis is true if the last value in the sequence has already been consumed. If value is present alongside done, it is the iterator's return value.
Iterable
满足 Iterable Protocol 的对象可以被 for of 遍历。
In order to be iterable, an object must implement the @@iterator method, meaning that the object (or one of the objects up its prototype chain) must have a property with a @@iterator key which is available via constant Symbol.iterator .