On Fri, Nov 11, 2011 at 3:28 PM, Irakli Gozalishvili <rfo...@gmail.com> wrote:
> I really need to know why WeakMaps don't accept primitives as keys, can
> anyone please reply ?

It’s because WeakMaps are intended to drop values if the key is
garbage collected.

A WeakMap guarantees that it will drop its value if it becomes
provably inaccessible.

This works for non-primitive keys because we can guarantee that once
an object has been garbage collected, no future object can be created
that would have been identical to it, making the value inaccessible.

Once a primitive value like 1 or the string "abc" has been garbage
collected, it is trivial to construct a new value that is identical to
the original key, so we could never implicitly garbage collect the
value corresponding to a primitive key.

Mark Miller has proposed a strong variation of WeakMap, simply Map,
that would serve well in cases where items are explicitly collected.

http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets

As I recall, a variant of Map was considered in the ES4 timeline as well.

Kris Kowal
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to