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