

Introducing smap.js, a forward polyfill for ES6 Maps - devnulled
http://www.eriwen.com/javascript/introducing-smap-dot-js/

======
just2n
I have quite a few questions about this implementation, but here are two
bigger ones:

1\. Why are constructed Maps here having delete, get, has, set, size, keys,
values, and iterate added outside of the prototype? I guess I don't see why
you wouldn't just put these on the prototype. That said, .call seems to be
unnecessary in a lot of this code.

2\. Why isn't there any attempt to make lookups for primitives faster. It's
all O(n).

------
watmough
For anyone confused, like me, about what a _forward polyfill_ is, here's an
explanation:

<http://www.jonathantneal.com/blog/polyfills-and-prototypes/>

------
FuzzyDunlop

        var NULL = null, TRUE = true, FALSE = false
    

I'm not sure I understand this. Why assign these to variables?

~~~
esrauch
I think the reason for these is for js minification. With these assignments a
simple minifier will replace those three variables with a line like this:

    
    
        var a=null,b=true,c=false;
    

Then your minified js will be smaller because all other instances of true,
false and null will be one character. Whether or not this is a reasonable
optimization is debatable but in terms of pure code size it would be a win.

~~~
ajanuary
Couldn't you build it into the minifier rather than polluting the original
source?

~~~
jackmoore
Yes, stuff like this shouldn't be in the source. UglifyJS and Closure compiler
make this optimization, but I've used other js minifiers that did not.

