// 辨别原始值和引用值的数据类型 // 1. 原始值 引用值 // 实现思路如下: 对于5个原始值 string number boolean undefined null来说,出来null使用typeof判断出来是object的话,其他的都是正常的,对于引用值 array, objcet, function 等使用除了array 使用typeof 判断出来是object的外,其他的也是可以的。 但是我们除了这些引用值,我们在代码中可能会存在这样的情况: typeof(new Number(123)), typeof(new Boolean(false)) 等这样的包装类来说, typeof 他们得出的结果都是’object‘,所以实现代码如下: function type(target){ // 获取typeof 回去的结果 var ret = typeof target; // 定义一些Object.prototype.toString.call存在值的模板 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" }else if (ret === 'object') { // 数组 // 对象 // 包装类 Object.prototype.toString var str = Object.prototype.toString.call(target); return template[str] }else{ return ret; } } 以上代码是博主个人学习用的时候写出来的,如果存在bug, 还望见谅, more interest, less interests!!!