isType(obj) / getType(obj) - v0
How about:

NS.CheckType = function (o,test) {
    // implements both
    return test ? o.constructor.name === test : o.constructor.name;
};
// usage
NS.CheckType(false);       //=&gt; 'Boolean'
NS.CheckType(false,Array); //=&gt; false
NS.CheckType({},Object);   //=&gt; true
NS.CheckType({},Array);    //=&gt; false
NS.CheckType([],Object);   //=&gt; false
NS.CheckType([],Array);    //=&gt; true
NS.CheckType(/[a-z]/);     //=&gt; 'RegExp'
NS.CheckType(0);           //=&gt; 'Number'
// etc...


Because most js-things 'inherit' from Object you can also use:

Object.prototype.is = function (test) {
    return test ? this.constructor === test : this.constructor.name;
};
// usage
'string'.is();        //=&gt; 'String'
'string'.is(Object);  //=&gt; false
 (function(){}).is(); //=&gt; Function
 var f = function(){};
 f.is(Function);      //=&gt; true
 // also
 function Animal(name){this.name = name || 'some animal';}
 var dog = new Animal('Bello');
 dog.is(Animal); //=&gt; true
 // etc...


[Edit] tested this in IE7-10:

Object.prototype.is = function (test) {
    return test 
      ? this.constructor === test 
      : (this.constructor.name || 
         String(this.constructor)
             .match ( /^function\s*([^\s(]+)/im)[1] );
};


for completeness: if the constructor function is anonymous the method will fail. Here's a solution for that:

Object.prototype.is = function (test) {
        return test 
          ? this.constructor === test 
          : (this.constructor.name || 
              ( String(this.constructor).match ( /^function\s*([^\s(]+)/im) 
               || ['','ANONYMOUS_CONSTRUCTOR'] ) [1] );
};
// usage
var Some = function(){ /* ... */}
    some = new Some;
some.is(); //=&gt; 'ANONYMOUS_CONSTRUCTOR'


And as bonus:

Object.prototype.is = function() {
        var test = arguments.length ? [].slice.call(arguments) : null
           ,self = this.constructor;
        return test ? !!(test.filter(function(a){return a === self}).length)
               : (this.constructor.name ||
                  (String(self).match ( /^function\s*([^\s(]+)/im)
                    || [0,'ANONYMOUS_CONSTRUCTOR']) [1] );
}
// usage
var Some = function(){ /* ... */}
   ,Other = function(){ /* ... */}
   ,some = new Some;
2..is(String,Function,RegExp);        //=&gt; false
2..is(String,Function,Number,RegExp); //=&gt; true
some.is();                            //=&gt; 'ANONYMOUS_CONSTRUCTOR'
some.is(Other);                       //=&gt; false
some.is(Some);                        //=&gt; true
// note: you can't use this for NaN (NaN === Number)
(+'ab2').is(Number);                 //=&gt; true