说到变量类型的辨别,我们一般会想到typeof方法,但是对于原始值的包装类,如果用typeof();
会只显示object 当然我们用Object.prototype.toString.call(new String)来判断的时候控制台打印'[object String]' 但是不免有些麻烦
所以,封装出一个type方法,使得那些特殊的变量都能让我们很清楚地辨别出其类型。
下面看代码:
function type(target){
var ret = typeof(target) ;
var template = {
'[object Array]' : 'array',
'[object Object]' : 'object',
'[object String]' : 'string - object',
'[object Number]' : 'Number - object',
'[object Boolean]': 'Boolean - object',
}
if(target === null){
return 'null';
}
if(ret == 'object'){
var str = Object.prototype.toString.call(target);
return template[str];
}
else {
return ret;
}
}