An iterator is a new concept of ES6. An Iterator is an object that lets us iterate through an Array, an Object, a String, or even custom Objects.
The Iterator allows us to effectively loop over a collection of objects like an array, string, objects, or other data structures.
Every function created with the function keyword or with the method shorthand has its own “this”, and it generally binds to “who” called it. Arrow functions don’t bind “this” to anything, the “this” inside depends on the surrounding context
Have you ever wondered how to iterate properties in JS objects (that aren’t arrays)? Well, I have.