var a = [];

1.基于instanceof

a instanceof Array;

 

 2.基于constructor

a.constructor === Array;

第一种方法和第二种方法的缺点在于:

(1)兼容性,早在ie早期版本中_proto__这个属性是不存在的
(2)数组需要先定义才能正确判断,假设是组件或模块之间的传值就不能正确判断了,原因是数组是引用型数据,在传递的过程中只是将引用的地址传递

3.基于Object.prototype.toString

Object.prototype.toString.apply(a) === '[object Array]';

var ary = [1,23,4];
function isArray(o){
return Object.prototype.toString.call(o)=='[object Array]';
}
console.log(isArray(ary));

 6.Array.isArray

Array.isArray([]); // true

 posted on 2017-11-13 11:32  董董董啊  阅读(220)  评论(0编辑  收藏  举报