Settings

Theme

Introducing smap.js, a forward polyfill for ES6 Maps

eriwen.com

13 points by devnulled 13 years ago · 9 comments

Reader

just2n 13 years ago

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 13 years ago

For anyone confused, like me, about what a forward polyfill is, here's an explanation:

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

FuzzyDunlop 13 years ago

    var NULL = null, TRUE = true, FALSE = false
I'm not sure I understand this. Why assign these to variables?
  • esrauch 13 years ago

    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 13 years ago

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

      • jackmoore 13 years ago

        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.

  • wendelinsky 13 years ago

    That is part of the es6-collections polyfill included as part of smap.js. If I understand correctly, it is for safety (for example you cannot override the value of "true").

    • Twisol 13 years ago

      null, true, and false are all keywords. Isn't undefined the only one that can be redefined? (And then it's just equal to void 0.)

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection