Kevin Gadd (2013-04-13T17:21:30.000Z)
github at esdiscuss.org (2013-07-12T02:26:59.129Z)
`new Number` and `new String` are also functionally useful to a degree - I've had reason to use both in my compiler's runtime library, either to allow returning a value from a constructor or to assign properties to a number. It sounds like `new Symbol` will never be functionally useful because it won't actually produce a valid symbol, in the wrapper case? If so, I agree that it makes sense to ensure that developers never try to use that particular construct and expect it to work. I also agree that in JS, my first instinct would be `new Symbol` to get a symbol, so having that silently do the wrong thing would not be desirable. Poisoning `toString` sounds like an okay solution too, as long as it is relatively straightforward to figure out *why* your `toString` has become poisoned - given no `toString`, it becomes kind of difficult to figure out (via stock JS debugging tools) that 'oh, I created a symbol object wrapper instead of a symbol' is your problem. (This is, to be fair, also a problem with the other primitive wrapper objects)