// 就这几行就完了
function getType(a) {
var type = typeof a
if(type != 'object') return type
return Object.prototype.toString.call(a).slice(7, -1)
}
console.log(getType(1)) // number
console.log(getType([1, 2])) // Array
首先,先用typeof
判断基础类型,如果是基础类型直接返回。如果typeof
返回object
的话,我们要继续进行判断。
使用Object.prototype.toString.call(a)
可以获得精确的类型,但是他返回的结果是这样的:
Object.prototype.toString.call({a: 1}) // "[object Object]"
Object.prototype.toString.call([1, 2]) // "[object Array]"
Object.prototype.toString.call(function a(){}) // "[object Function]"
Object.prototype.toString.call(new Error) // "[object Error]"
我们可以看出,我们需要返回的字符串中第二个单词,所以使用slice
方法数一下一截取就好了。