<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 这样根据不同的判断可以获取到所有的返回值 并且不会带空格