JS判断数据类型的4种方法

4种判断方法分别是:

  • typeof
  • instanceof
  • prototype属性
  • constructor属性

可判断的类型对比如下图:
在这里插入图片描述

// 构造函数名方法
function getConstructorName(data) {
        return (data === undefined || data === null) ? data : (data.constructor && data.constructor.toString().match(/function\s*([^(]*)/)[1]);
    }
    
    //  对象原型方法
    //  不能判断自定义函数对象类型
    function getPrototypeName(data) {
        return Object.prototype.toString.call(data).slice(8, -1);
    }

    //    自定义的构造函数
    function Func() {
        this.attr = 33;
    }
    
    var newObj = new Func(),
        num = 123,
        arr = [];

    console.group("检测自定义构造函数实例");
    console.log(getConstructorName(newObj)); // Func
    console.log(getPrototypeName(newObj)); // Object ;仅能识别为对象
    console.log(newObj instanceof Func); // true
    console.log(typeof newObj); // object ;仅能识别为对象
    console.groupEnd();
    
    console.group("检测数值类");
    console.log(getConstructorName(num)); // Number
    console.log(getPrototypeName(num)); // Number
//    console.log(num instanceof Number); // 数值类不是对象不能使用该方法
    console.log(typeof num); // number
    console.groupEnd();
    
    console.group("检测数组类");
    console.log(getConstructorName(arr)); // Array
    console.log(getPrototypeName(arr)); // Array
    console.log(arr instanceof Array); // true
    console.log(typeof arr); // object ;仅能识别为对象
    console.groupEnd();

End.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值