判断JavaScript数据类型的方式及优缺点

143 阅读1分钟

常用的类型检查:4 种!

1:typeof : {

            typeof 是一个操作符,不是一个函数,所以后面的括号没有特定意义,返回的结果有:number、boolan、stringObjectundefinedfunction6种数据类型。

}

优点:对基本类型的判断较为准确。

缺点:无法精准判断引用数据类型。null 和 Array 判断为 ‘ Object ’。

———————————————————————————————————————————

2:instanceof :{

             instanceof  判断一个对象和函数在原型链上是否有关系,有返回 true 否则为 false

}

优点:对引用类型的判断较为准确。

缺点:无法对基本类型做出精确地判断,限定了我们的数据类型必须是 new 出来的。这样才能精确的判断。

———————————————————————————————————————————

3:constructor :{

            每个函数的定义,都会生成一个 constructor ,基本类型会执行隐时的执行装箱操作,创造一个构造函数的实例。 

}

优点:对基本类型和引入类型都可以判断。

缺点:无法判断 null 和 undefined ,而且 constructor 是可以修改的,会导致检查结果不准确。

———————————————————————————————————————————

4:Object.prototype.toString.call () {

            无论什么类型都可以判断,返回类型的格式为 [ Object xxx ]

}

缺点:Object.prototype.toString 本身也可能被修改,对于数组的判断,可以通过 instanceof 和Object.prototype.toString.call()来判断。