> Axel Rauschmayer wrote:
>>> I agree with Tom, "object" is the best choice if we are to avoid extending 
>>> typeof's codomain. If we choose to extend, then your best case made above 
>>> arguess for "symbol", not "string".
>> 
>> I’ve been wondering: instead of fixing typeof, wouldn’t it be simpler to 
>> extend instanceof, by introducing new types:
>> 
>> - ReferenceType: to check whether a value is an object. Currently, objects 
>> such as Object.create(null) and Object.prototype are objects that are not 
>> instanceof Object.
> 
> This doesn't work with value objects, and anyway doesn't work by testing 
> proto-chain membership starting from RHS.prototype where RHS is the 
> constructor function.
> 
>> - ValueType: for primitives and possibly future value objects.
>>    - PrimitiveBoolean: for primitive booleans, same as typeof x === 'boolean'
> 
> Again, we cannot inserte more prototypes on existing proto-chains.
> 
>>    - etc.
>> 
>> Should there ever be guards in the future, instanceof MyGuard would also 
>> make sense.
> If you are not using the proto-chain, then what? What's the underlying theory 
> for extending instanceof?

The idea would be to not use the proto chain (which would be odd for primitive 
values, anyway), to make these “pseudo-types” special.

> Compatibility concerns make this a non-starter, IMHO. We'd do better to keep 
> instanceof simple and extend typeof. IE already has extra typeof results so 
> developers have to beware.

Extending instanceof would result in something that is more consistent. It 
would allow less experienced programmers to ignore the difference between 
primitives and objects (which you *almost* can now in JavaScript, in stark 
contrast to, say, Java).

Axel

-- 
Dr. Axel Rauschmayer
[email protected]

home: rauschma.de
twitter: twitter.com/rauschma
blog: 2ality.com

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to