ECMAScript 5’s array.forEach(callback[, thisArg]) is very convenient to iterate on an array and has many advantage over the syntax with a for:
- It’s more concise.
- It doesn’t create variables that we need only for the purpose of iterating.
- It’s creates a visibility scope for the local variables of the loop.
- It boosts the performance.
Is there a reason why there is no object.forEach to replace for(var key in object) ?
Of course, we could use a JavaScript implementation, like _.each or $.each but those are performance killers.
Well, it’s pretty easy to rig up yourself. Why further pollute the prototypes?
I think a big reason is that the powers that be want to avoid adding built in properties to
Object.Objects are the building blocks of everything in Javascript, but are also the generic key/value store in the language. Adding new properties toObjectwould conflict with property names that your Javascript program might want to use. So adding built in names toObjectis done with extreme caution.Array is indexed by integers, so it doesn’t have this issue.
This is also why we have
Object.keys(obj)instead of simplyobj.keys. Pollute theObjectconstructor as that it typically not a big deal, but leave instances alone.