> > It turns out the spec is fine < > https://people.mozilla.org/~jorendorff/es6-draft.html#sec-weakmap.prototype.set> > step 5 says > > If Type > <https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-data-types-and-values> > (*key*) is not Object, throw a *TypeError* exception. > > > as I hoped and expected. The reason I was alarmed is that I got the > following behavior on v8/iojs: > > > var w = new WeakMap(); > undefined > > > var r = Symbol.for('foo'); > undefined > > > w.set(r, true); > {} > > > w.get(r) > true > > > I will file a v8 bug. Please someone, add a test for this to test262. > > Ah, I see.
FYI (you may know deeper than I ;)), since symbols are primitive values, they cannot be used as a WeakMap's key. And since they are primitive values, they cannot have any properties. It means that primitive values are immutable. So Symbol.for / Symbol.keyFor's registry can be WeakMap in the internal implementation. Actually, we implemented so :D http://trac.webkit.org/changeset/182915
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss