var type = (function() {
var getType = function(o) { return Object.prototype.toString.call(o) };
return {
isNumber: function(o) { return getType(o) === '[object Number]'; },
isBoolean: function(o) { return getType(o) === '[object Boolean]';},
isString: function(o) {return getType(o) === '[object String]';},
isFunction: function(o) {return getType(o) === '[object Function]';},
isArray: function(o) { return getType(o) === '[object Array]';},
isObject: function(o) { return getType(o) === '[object Object]';},
isDate: function(o) { return getType(o) === '[object Date]';},
isRegExp: function(o) { return getType(o) === '[object RegExp]';},
isNull: function(o) { return getType(o) === '[object Null]';},
isUndefined: function(o) { return getType(o) === '[object Undefined]'; }
};
}());
// test
var n = 2;
var s = "hello";
console.log(type.isNumber(n), type.isString(s)); // true true