js数据类型判断

来源:互联网 发布:淘宝小号出租 编辑:程序博客网 时间:2024/06/04 21:05
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
            };
})();

原创粉丝点击