var Type = (function() {
var _toString = Object.prototype.toString,
UNDEFINED_TYPE = "Undefined",
NULL_TYPE = "Null",
BOOLEAN_TYPE = "Boolean",
NUMBER_TYPE = "Number",
STRING_TYPE = "String",
OBJECT_TYPE = "Object",
BOOLEAN_CLASS = "[object Boolean]",
NUMBER_CLASS = "[object Number]",
STRING_CLASS = "[object String]",
FUNCTION_CLASS = "[object Function]",
DATE_CLASS = "[object Date]",
ARRAY_CLASS = "[object Array]",
REGEXP_CLASS = "[object RegExp]",
ERROR_CLASS = "[object Error]";
var type = function(o) {
switch(o) {
case null: return NULL_TYPE;
case (void 0): return UNDEFINED_TYPE;
}
var t = typeof(o);
switch(t) {
case "undefined": return UNDEFINED_TYPE;
case "boolean":return BOOLEAN_TYPE;
case "string":return STRING_TYPE;
case "number":return NUMBER_TYPE;
}
return OBJECT_TYPE;
};
var isUndefined = function(o) {
return type(o) == UNDEFINED_TYPE;
};
var isNull = function(o) {
return type(o) == NULL_TYPE;
};
var isBoolean = function(o) {
return _toString.call(o) == BOOLEAN_CLASS;
};
var isNumber = function(o) {
return _toString.call(o) == NUMBER_CLASS;
};
var isString = function(o) {
return _toString.call(o) == STRING_CLASS;
};
var isFunction = function(o) {
return _toString.call(o) == FUNCTION_CLASS;
};
var isDate = function(o) {
return _toString.call(o) == DATE_CLASS;
};
var isArray = function(o) {
return _toString.call(o) == ARRAY_CLASS;
};
var isRegExp = function(o) {
return _toString.call(o) == REGEXP_CLASS;
};
var isError = function(o) {
return _toString.call(o) == ERROR_CLASS;
};
return {
'type': type,
'isUndefined': isUndefined,
'isNull': isNull,
'isBoolean': isBoolean,
'isNumber': isNumber,
'isString': isString,
'isFunction': isFunction,
'isDate': isDate,
'isArray': isArray,
'isRegExp': isRegExp,
'isError': isError
};
})();
var _toString = Object.prototype.toString,
UNDEFINED_TYPE = "Undefined",
NULL_TYPE = "Null",
BOOLEAN_TYPE = "Boolean",
NUMBER_TYPE = "Number",
STRING_TYPE = "String",
OBJECT_TYPE = "Object",
BOOLEAN_CLASS = "[object Boolean]",
NUMBER_CLASS = "[object Number]",
STRING_CLASS = "[object String]",
FUNCTION_CLASS = "[object Function]",
DATE_CLASS = "[object Date]",
ARRAY_CLASS = "[object Array]",
REGEXP_CLASS = "[object RegExp]",
ERROR_CLASS = "[object Error]";
var type = function(o) {
switch(o) {
case null: return NULL_TYPE;
case (void 0): return UNDEFINED_TYPE;
}
var t = typeof(o);
switch(t) {
case "undefined": return UNDEFINED_TYPE;
case "boolean":return BOOLEAN_TYPE;
case "string":return STRING_TYPE;
case "number":return NUMBER_TYPE;
}
return OBJECT_TYPE;
};
var isUndefined = function(o) {
return type(o) == UNDEFINED_TYPE;
};
var isNull = function(o) {
return type(o) == NULL_TYPE;
};
var isBoolean = function(o) {
return _toString.call(o) == BOOLEAN_CLASS;
};
var isNumber = function(o) {
return _toString.call(o) == NUMBER_CLASS;
};
var isString = function(o) {
return _toString.call(o) == STRING_CLASS;
};
var isFunction = function(o) {
return _toString.call(o) == FUNCTION_CLASS;
};
var isDate = function(o) {
return _toString.call(o) == DATE_CLASS;
};
var isArray = function(o) {
return _toString.call(o) == ARRAY_CLASS;
};
var isRegExp = function(o) {
return _toString.call(o) == REGEXP_CLASS;
};
var isError = function(o) {
return _toString.call(o) == ERROR_CLASS;
};
return {
'type': type,
'isUndefined': isUndefined,
'isNull': isNull,
'isBoolean': isBoolean,
'isNumber': isNumber,
'isString': isString,
'isFunction': isFunction,
'isDate': isDate,
'isArray': isArray,
'isRegExp': isRegExp,
'isError': isError
};
})();