在js中,使用typeof函数可以获得一个对象的类型,但是对于继承自Object类的Array、Date、RegExp他们的返回类型也是object,对于并非从object继承的null类型,typeof null的返回类型也是object,如果想要明确某个字面量的类型,那么typeof就显得力不从心了,但是Object有一个名为constructor的属性可以解决该问题,不多说了,直接上代码
Object.getType=function(obj){
if(typeof obj=="object"){
if(obj==null) return null;
if(obj.constructor==(new Array).constructor) return "array";
if(obj.constructor==(new Date).constructor) return "date";
if(obj.constructor==(new RegExp).constructor) return "regexp";
return "object";
}
return typeof(obj);
}
测试代码:
var mydate=new Date();
var myNull=null;
var myRegExp=new RegExp();
var myArray=new Array();
var myObject=new Object();
document.write("<br>"+Object.getType(mydate));
document.write("<br>"+Object.getType(myNull));
document.write("<br>"+Object.getType(myRegExp));
document.write("<br>"+Object.getType(myArray));
document.write("<br>"+Object.getType(myObject));
结果: