js存在两套类型系统:基本数据类型和对象类型,其中基本数据类型包括5种:undefined,null,string,number,boolean。对象类型包括Array,RegExp等等。js对基本类型的判断是靠typeof操作符来判定,对象类型判断是靠instanceof和in操作符来判定。但这些判定无法识别Null,RegExp,Array,Arguments等细分对象类型。
typeof可识别出的类型有:string,boolean,number,function,undefined,object,在ie浏览器下,会出现unknow类型
其中 string,number,function,boolean可通过typeof来判断
undefined 可通过void 0来判断
null 可通过 null来判断
但Array、RegExp如何判断呢?
通过Object.prototype.toString.call()来实现判断,例子如下:
var arr=[1,2,3];
Object.prototype.toString.call(arr)==='[object Array]'
var reg=new RegExp("ab");
Object.prototype.toString.call(reg)==='[object RegExp]'
Object.prototype.toString可判断的类型有:"Arguments", "Array", "Boolean", "Date", "Error", "Function", "JSON", "Math", "Number", "Object", "RegExp", "String","Null","Undefined"
null,undefined,NaN判断可通过:
function isNaN(obj){
return obj!==obj;
}
function isUndefined(obj){
return void 0 ===obj;
}
function isNull(obj){
return obj===null;
}