<script>
function getType(obj) {
let type = typeof obj;
if (type !== "object") {
return type;
}
if(Object.prototype.toString.call(obj).length === 13){
return Object.prototype.toString.call(obj).slice(-5,-1);
}
if(Object.prototype.toString.call(obj).length === 14){
return Object.prototype.toString.call(obj).slice(-6,-1);
}
return Object.prototype.toString.call(obj).slice(-7,-1);
}
console.log(getType(null));
console.log(getType(1));
console.log(getType('123'));
console.log(getType(false));
console.log(getType([1,2,3,4]));
console.log(getType({a:123}));
console.log(getType(null));
console.log(getType(undefined));
console.log(getType(()=>{}));
</script>
首先方法通过 type 判断 是基础类型还是 复杂数据类型 如果是基本数据类型就直接返回基本数据类型 但是这里的null 也算object 并且 Object.prototype.toString.call(obj)的返回值格式是[ object object/null/Array ] 因为后面的个数不同 所以 在这里根据的是Object.prototype.toString.call的返回值长度来判断是Null还是object还是Array 这样根据不同的判断可以获取到所有的返回值 并且不会带空格