intercellular / cell

A self-driving web app framework

Home Page:https://www.celljs.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

forEach polyfil

fprijate opened this issue · comments

NodeList behaves as array so:


if (window.NodeList && !NodeList.prototype.forEach) { 
  NodeList.prototype.forEach = Array.prototype.forEach;
}

It's shorter and throws some exceptions.
Array.prototype.forEach

Thanks for pointing out. The Array.prototype.forEach option was actually what I've been using throughout 99% of the development process before I released the library to public.

The reason I switched it at the last moment was because so many people online keep saying this is a bad pattern (although I don't agree entirely) and I didn't want to worry too much about this so just decided to go with the polyfill I found on MDN (I mean it's MDN, so gotta be alright, right? :) )

BUT, I honestly don't think they will make a big difference and prefer your Array.prototype.forEach option over the MDN one since I want to keep the code as short as possible.

If anyone has thoughts on this or think I'm missing something, please jump in and share. I'm almost leaning towards using this Array.prototype.forEach solution.

Hi

I am aware of MDN polyfil
IMO it's intended for older browsers which don't implement functional Array methods (map, filter, forEach, ...).
We use map method in few places.
We should polyfill map and other Array methods to in this case.
All modern browsers implement them natively (except Edge misses Nodelist.forEach).
So your solution is sane.
Anyone who is fan of ancient browsers can anyhow use some polyfill library.

Thanks for the suggestion, we finally incorporated this with b4751fc

Now it's just a one-liner! https://github.com/intercellular/cell/blob/develop/cell.js#L376