JS 中类型鉴别

  JS中的基本类型有:数字(Number(NaN,Infinity)),字符串(String),Undefined,Null,Boolean

  引用类型有:数组(Array),对象(Object),函数(Function),日期(Data),正则(RegExp)

鉴别类型一般使用typeof关键字,但是typeof运算符有很多坑:

  1:对null返回的是object,但是不能将属性和方法加在null身上。

  2:对NaN和Infinity返回的是number,但是这两个量是不可以用来做数值计算的。

  3:不能区分对象,数组,Data,正则及null,都返回的是object。

  最完整的方法是使用Object.prototype.toString方法(前提是此方法没有被重写的情况下)来鉴别各种类型。

  typeof Object.prototype.toString.call(XX)
number number [object Number]
 NaN  number  [object Number]
 Infinity number [object Number]
string     string [object String]
undefined undefined [object Undefined]
null object [object Null]
bool boolean [object Boolean]
array object [object Array]
obj object [object Object]
fun function [object Function]
Data     object [object Data]
RegExp object [object RegExp]

 

  

 

  此方法唯一的缺点就是没办法区分NaN,Infinity和number,其实从本质上说NaN和Infinity是number的两个特例,所以按照number来标识也不错,只是以后遇见需要判断里的时候要先排除这两个特例再辅之Object.prototype.tostring.call()就能完善的区分各种类型了.

原文地址:https://www.cnblogs.com/Flychown/p/6222992.html