@Kamarey: constructor is a regular DontEnum property of the prototype object; this might not be a problem for built-in types as long as nobody does anything stupid, but for user-defined types it easily can be; my advise: always use instanceof, which checks the prototype-chain and does not rely on properties which can be overwritten arbitrarily