function type(target){
var template = {
"[object Array]" : "array",
"[object Object]" : "object",
"[object Number]" : "number - object",
"[object Boolean]" : "boolean - object",
"[object String]" : "string - object"
}
if(target == null){
return null
}
if(typeof(target) == "object"){
var str = Object.prototype.toString.call(target)
return template[str]
}else{
return typeof(target)
}
}
思路
首先将null这个值排除掉
接着将函数类型排除出来
然后判断是 原始值还是引用值
最后复盘发现,尽管函数类型是单独的,但是符合原始值的判断方法,归纳到一点即可!