原生JavaScript实现jQuery中的type检测数据类型

众所周知,JavaScript中的typeof虽然可以检测数据类型,但是在检测数据类型的时候,返回的数据类型不一定准确:比如 null 也会返回null ,返回的数据类型只有下面几种,远远不能准确的判断属于何种数据类型。

"undefined" ——如果这个值未定义;
"boolean" ——如果这个值是布尔值;
"string" ——如果这个值是字符串;
 "number" ——如果这个值是数值;
"object" ——如果这个值是对象或 null ;
"function" ——如果这个值是函数。

在网上也看了一些所谓的全面的检测方法,也没有很好的实现封装。无聊之余看了下jQuery的type实现方法,现在我用JavaScript实现一下。

// 定义一个对象保存所有的数据类型
var class2type = {};
var typeList = "Boolean Number String Function Array Date RegExp Object Error Symbol"
// 把所有的数据类型遍历进class2type里面
    typeList.split(" ").forEach(function (name, i) {
        class2type["[object " + name + "]"] = name.toLowerCase();
    })
// class2type = { "[object Boolean]" : "BOOLEAN" }
    var type = function (obj) {
        if (obj == null) { // 当等于undefined 或者 null 直接返回 
            return obj + "";
        }
    return typeof obj === "object" || typeof obj === "function" ?
                  class2type[ toString.call( obj ) ] || "object" :
          typeof obj;
    }

你可能感兴趣的:(原生JavaScript实现jQuery中的type检测数据类型)