首先需要明确的是typeof在判断[],{},null时返回的都是 object,所以是无法判断数组和对象的。
1,常用的方法是:instanceof
所以说,它可以用来判断是不是数组,而判断不了是不是对象。
但是如果存在多个全局执行环境,就会存在多个不同版本的Array构造函数了,这种办法就会失效,使用下一种:
2,Array.isArray(arr)
不管arr是在哪个全局环境定义的,一旦是数组则返回true,否则false.
3,constructor
var arr=[]console.log(arr.constructor==Array) //true4,toString
var arr=[]console.log(Object.prototype.toString.call(arr) === '[object Array]') //true 二,判断是否对象的方法1、toString(推荐)
Object.prototype.toString.call(obj) === '[object Object]'//Object原型对象上的toString方法是可以判断类型的。利用call把指针指向obj,也就是调用这个toString方法来判断obj2、constructor
obj.constructor === Object