js数据类型如果用typeof判断的话,对于数组、null、对象来说,都会返回object。

要想区别对象、数组、函数单纯使用typeof分辨不了,所以使用Object.prototype.toString.call

toString()方法和Object.prototype.toString.call()方法对比

  1. var arr=[1,2];
  2. //直接对一个数组调用toString()
  3. arr.toString();// "1,2"
  4. //通过call指定arr数组为Object.prototype对象中的toString方法的上下文
  5. Object.prototype.toString.call(arr); //"[object Array]"

精确判断对象的类型


JavaScript 中一切都是对象,任何都不例外,对所有值类型应用 Object.prototype.toString.call() 方法结果如下:

console.log(Object.prototype.toString.call(123)) //[object Number]
console.log(Object.prototype.toString.call('123')) //[object String]
console.log(Object.prototype.toString.call(undefined)) //[object Undefined]
console.log(Object.prototype.toString.call(true)) //[object Boolean]
console.log(Object.prototype.toString.call({})) //[object Object]
console.log(Object.prototype.toString.call([])) //[object Array]
console.log(Object.prototype.toString.call(function(){})) //[object Function]

http://www.cnblogs.com/bq-med/p/8796836.html