typeof extensibility, building on my Value Objects slides from Thursday's TC39 meeting

Brendan Eich brendan at mozilla.com
Sun Aug 4 09:23:58 PDT 2013

Brandon Benvie wrote:
> On Aug 3, 2013, at 8:25 PM, Brendan Eich<brendan at mozilla.com>  wrote:
>> Value objects are non-extensible, no-own-property (so effectively frozen), compare-by-value objects.
> So, importantly, only one of the two existing commonly used tests for 'objectness' will continue to work correctly in the face of value objects. The first being a test that typeof is "object" or "function" that's not null, will continue to work.

You must mean by 'objectness' reference-not-value semantics -- typeof 
returning "object" or "function" and the user ruling out null value (or 
opting into "null" result) doesn't do a thing to reject non-extensible, 
no-own-property objects of course.

>   The second `Object(value) === value` would no longer work because a value object will return itself from `Object`.

Yes, that's important. We don't want wrappers, they are the greater evil.


More information about the es-discuss mailing list