instanceof Operator

Jeff Dyer jodyer at adobe.com
Sun Oct 21 10:47:08 PDT 2007




On 10/21/07 10:03 AM, liorean wrote:

> On 21/10/2007, Eugen.Konkov at aldec.com <Eugen.Konkov at aldec.com> wrote:
>> var a;
>> a= {};
>> a instanceof Object //true
>> a= [];
>> a instanceof Array //true
>> a='asdf';
>> a instanceof String //false
>> a= 7;
>> a instanceof Number //false
>> 
>> Why?
> 
> Because those are primitives of type double and string respectively.
> They are not instances of any of the compound types Object, String or
> Number.
> 
> Something silly that JavaScript inherited from Java that the world
> would be much better off without, but as I understand it won't be
> corrected because of real world compatibility problems.

This problem is fixed by the addition of the 'is' operator in ES4. Replace
'instanceof' with 'is' in all of the above, and the result will be true in
each case. You correctly point out that 'instanceof' is terminally broken
for compatibility's sake.

Jd




More information about the Es4-discuss mailing list