If you really want a safe map where any key is allowed and doesn't conflict
with builtin javascript properties, just implement your own map.  Here is a
very simple one that allows storing *any* value as keys.  This includes the
string "__proto__" as well as non-strings.

If you want something faster and your pretty sure that "__proto__" will
never be used as a key and all other keys are strings, then use native
objects with Object.create(null).  Mostly safe is good enough for a large
number of cases.  Including generating prime numbers for RSA private keys
for your online bank.

function map() {
  var keys = [];
  var values = [];
  return { get: get, set: set };
  function get(key) {
    return values[keys.indexOf(key)];
  }
  function set(key, value) {
    var index = keys.indexOf(key);
    if (index < 0) {
      index = keys.length;
      keys[index] = key;
    }
    return values[index] = value;
  }
}


On Sat, Sep 21, 2013 at 10:47 AM, Jorge Chamorro <jo...@jorgechamorro.com>wrote:

> On 21/09/2013, at 03:28, Andrew Kelley wrote:
>
> > 3rd-eden:
> > Wow! How did I not know about this before? Thank you for this.
> >
> > To be clear, no sarcasm here. I'm really happy to have learned about
> this.
>
> I'm happy that you're happy, but even with Object.create(null) you aren't
> safe, because what you get still has a working __proto__
>
> --
> ( Jorge )();
>
> --
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to nodejs@googlegroups.com
> To unsubscribe from this group, send email to
> nodejs+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
>
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to nodejs+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to