- null和undefined接返回
- 对象object.prototype.toString
- 将object.prototype.toString返回的所有类型写成一个对象的属性,如果检测出是这些属性中的就返回
- 基本类型typeof
~function() {
let objType = {}
let toString = {}.prototype.toString
"String Number Boolean Symbol Function Array Date RegExp Object Error".split(" ").forEach((item) => {
objType['[object ' + item + ']'] = item.toLowerCase()
})
function typeTest (obj) {
if (obj == null) {
return obj + ''
}
if (typeof obj !== 'object' && typeof obj !== 'function') {
return typeof obj
} else {
return objType[toString.call(obj)] || 'object'
}
}
}()