要求能识别所有原始类型,function, array, object, 并可以识别包装类
数字包装类 -> "number - object"
布尔包装类 -> "boolean - object"
字符串包装类 -> "string - object"
结果:
代码:
/**
* 先判断是否为null
* 再判断是对象还是typeof能识别的其他类型
*/
function type(target){
//先判断是否为null,不能让他返回"object"
if(target === null){
return null;
}
var ret = typeof(target);
var template = {
"[object Array]": "array",
"[object Object]" : "object",
"[object Boolean]" : "object - boolean",
"[object String]" : "object - string",
"[object Number]" : "object - number"
};
if(ret == "object"){
var str = Object.prototype.toString.call(target);
return template[str];
} else {
return typeof(target);
}
}