判断数组类型的方法

介绍

我们都知道js中可以使用typeof来判断数据类型,但是有时它并不很精确,就拿数组来说,判断的结果是object。所以我们需要用其他方法来准确判断到底是不是一个数组。

方法

有四个方法,很简单:

instanceof

语法:object instanceof constructor
意思是说object的原型链上是否有constructor的prototype,object是检测的对象,constructor是一个构造函数,结果返回布尔值

1
2
var arr = [];
arr instanceof Array; //true

constructor

语法:object.constructor 返回object的构造函数

1
2
var arr = [];
arr.constructor == Array; //true

Object.prototype.toString.call()

1
2
var arr = [];
Object.prototype.toString.call(arr); //"[object Array]"

Array.isArray()

1
2
var arr = [];
Array.isArray(arr); //true

此方法可能有兼容问题

总结

综合上面提到的方法,写一个比较完善的方法:

1
2
3
4
5
6
7
8
9
10
11
function isArrayFn(v){
if(Array.isArray){
return Array.isArray(v)
}else{
return Object.prototype.toString.call(v) === '[object Array]';
}
}


var arr=[];
console.log(isArrayFn(arr)); //true