@@toStringTag spoofing for null and undefined
Boris Zbarsky
bzbarsky at mit.edu
Tue Jan 20 12:21:28 PST 2015
On 1/20/15 3:13 PM, Jordan Harband wrote:
> Between the two issues I proposed, I definitely think that "something
> pretending to be a builtin" is far less hazardous then "altering
> builtins to appear to be something else". If removing the prefixing
> entirely is what it takes to make *all* (not just ES5) builtin
> @@toStringTag values non-configurable, I'd be happy with that.
I don't see how that solves the problem you're trying to solve.
Consider:
var arr = [];
Object.defineProperty(arr, Symbol.toStringTag,
{ value: "Date" });
In today's spec, Object.prototype.toString.call(arr) will be "[object
~Map]".
If the ~-prefixing is removed, this will return "[object Date]", no?
The fact that @@toStringTag is non-configurable on Array.prototype
doesn't matter, since the above code shadows it on the instance.
-Boris
More information about the es-discuss
mailing list