判断一个数据的类型

1⃣️.typeof 运算符号

缺点:typeof检测null的时候也会返回Object

2⃣️.instanceof运算符

优点:弥补了typeof不能具体检测属于哪个对象的局限性

缺点:不能用来检测和处理字面量方式创建出来的基本数据类型,即原始数据类型

function checkIsInstanceOf(obj,type){
    let proto = Object.getPrototypeOf(obj)
    while(proto!=null){
        if(proto===type.prototype){
            return true
        }
        proto = Object.getPrototypeOf(obj)
    }
    return false
}

3⃣️.constructor构造函数

优点:作用和instanceof相同,可以处理引用类型还能处理原始数据类型

使用constructor的时候最好加上(),放置js把它当成小数

(1).constructor === Number

缺点:由于是函数原型上面的属性,类的原型进行重写后,可能导致判断不准确

4⃣️.Object.prototype.toString.call()方法

Object.prototype.toString返回当前方法的执行体所属类的详细信息

返回结果如:[object Number]

posted @ 2022-03-03 13:12  BONiii  阅读(20)  评论(0编辑  收藏  举报