美文网首页
js检测数据类型有那些方法

js检测数据类型有那些方法

作者: Astep | 来源:发表于2022-01-12 15:55 被阅读0次

    1. typeof

    • 直接在计算机底层基于数据类型的值(二进制)进行检测
    • tyepof null "object" 对象存储在计算机中,都是以000开始的二进制存储,null也是,所以检测出来的结果是对象
    • typeof 普通对象/数组对象/正则对象/日期对象 "object"

    2. instanceof 检测当前实例是否属于这个类的

    • 底层机制:只要当前类出现在实例的原型链上,结果都是true
    • 由于我们可以肆意的修改原型的指向,所以检测出来的结果是不准的
    • 不能检测基本数据类型

    3. constructor

    • 用起来看似比instanceof还好用一些(基本类型支持的)
    • constructor可以随便改,所以也不准

    4. Object.prototype.toString.call(value)

    • 标准检测数据类型的办法:Object.prototype.toString不是转换为字符串,是返回当前实例所属类的信息
    • 标准检测的办法 "[object Number/String/Boolean/Null/Undefined/Symbol/Object/Array/RegExp/Date/Function]"

    下面封闭一个判断数据类型方法:

    function detectionType(data) {
        const class2type = {
            '[object Null]': "null",
            '[object Date]': "date",
            '[object Error]': "error",
            '[object Array]': "array",
            '[object Number]': "number",
            '[object Object]': "object",
            '[object RegExp]': "regexp",
            '[object String]': "string",
            '[object Symbol]': "symbol",
            '[object Boolean]': "boolean",
            '[object Function]': "function",
            '[object Undefined]': "undefined",
        };
        // 基本数据类型都采用typeof检测
        if (typeof data === "object" || typeof data === "function") {
            return class2type[Object.prototype.toString.call(data)] || "object";
        } else {
            return typeof data;
        }
    }
    

    相关文章

      网友评论

          本文标题:js检测数据类型有那些方法

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