my positive spin: • Provides a uniform OO surface for all values. • Does so without ruining value immutability. • Does so without ruining API patchability. • Going forward: we need a solution for value types. YES, I DO SEE THAT ELEPHANT
MSIE "unknown" type may simply be rare enough to be undiscovered. Fallback: "object" with [[Get]] et al that behave like auto-wrappers? (plus Object.isValue()?)
auto-wrapping • No auto-unwrapping of Symbol objects •typeof iterator === "symbol" • Symbol.prototype.toString should throw to help catch bugs in code evolution; Object.prototype.toString usable for infallible string coercion • Symbol() creates primitive, new Symbol throws