美文网首页JavaScript
原生JavaScript实现jQuery中的type检测数据类型

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

作者: 宇cccc | 来源:发表于2017-04-20 16:46 被阅读20次

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

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

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

//定义一个对象保存所有的数据类型
var class2type = {};
//把所有的数据类型遍历进class2type里面 jQuery中用的是自己封装的each  forEach() 是es5新增的方法
    "Boolean Number String Function Array Date RegExp Object Error Symbol".split(" ").forEach(function (name, i) {

        class2type["[object " + name + "]"] = name.toLowerCase();

    })

    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检测数据类型

    本文链接:https://www.haomeiwen.com/subject/ilzyattx.html