检测数组的方法

130 阅读1分钟
  • typeof
    var arr=[];
    var json={};
    typeof(arr) or typeof(json) 无论怎么样返回值都是Obeject

  • Object instanceof Array

ES3 针对这个问题做出了处理的方式
var arr = [];
if(arr instanceof Array){
console.log("这是一个数组 ")
}

instancesof操作符的问题在于,他假定只有一个全局环境,如果存在包含多个框架的话,那实际就存在两个不同以上的执行环境了,也就是说存在了两个不同的版本的Array构造函数,如果一个页面从一个页面传入数组,那么不同页面就会存在不同构造函数

ES5针对这个问题做出了处理
if(Array.isArray(arr)){
console.log('这是一个数组')
}

兼容方面有些问题、目前兼容的有 IE9 、fireFpx、Safari5+、Oprea 10.5+、Chrome