Skip to content
On this page

JS准确获取数据类型

js
function getType(obj) {
  var type = typeof obj;

  if (type !== 'object') {
    return type;
  }
  //如果不是object类型的数据,直接用typeof就能判断出来

  //如果是object类型数据,准确判断类型必须使用Object.prototype.toString.call(obj)的方式才能判断
  return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
}

console.log(getType(1));                                   //结果: number
console.log(getType('hello'));                             //结果: string
console.log(getType(true));                                //结果: boolean
console.log(getType(undefined));                           //结果: undefined
console.log(getType(null));                                //结果: Null
console.log(getType([1, 2, 3]));                           //结果: Array
console.log(getType({ id: 1, name: '张三' }));             //结果: Object
console.log(getType(function(){ console.log('hello'); })); //结果: function
console.log(getType(new Date()));                          //结果: Date
console.log(getType(/^[a-zA-Z]{5,20}$/));                  //结果: RegExp
console.log(getType(new Error()));                         //结果: Error
console.log(getType(new Number(100)));                     //结果: Number
console.log(getType(new Boolean(true)));                   //结果: Boolean
function getType(obj) {
  var type = typeof obj;

  if (type !== 'object') {
    return type;
  }
  //如果不是object类型的数据,直接用typeof就能判断出来

  //如果是object类型数据,准确判断类型必须使用Object.prototype.toString.call(obj)的方式才能判断
  return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
}

console.log(getType(1));                                   //结果: number
console.log(getType('hello'));                             //结果: string
console.log(getType(true));                                //结果: boolean
console.log(getType(undefined));                           //结果: undefined
console.log(getType(null));                                //结果: Null
console.log(getType([1, 2, 3]));                           //结果: Array
console.log(getType({ id: 1, name: '张三' }));             //结果: Object
console.log(getType(function(){ console.log('hello'); })); //结果: function
console.log(getType(new Date()));                          //结果: Date
console.log(getType(/^[a-zA-Z]{5,20}$/));                  //结果: RegExp
console.log(getType(new Error()));                         //结果: Error
console.log(getType(new Number(100)));                     //结果: Number
console.log(getType(new Boolean(true)));                   //结果: Boolean