这篇文章主要介绍了JavaScript怎样判断数组类型,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强>判断方法
强>
<强>一、Array.isArray 强>
ES5新增的数组方法,数组。isArray应该是我们最先想到的判定方式,现在应用的也比较广泛。
const arr =, (1、2、3、4) Array.isArray (arr),,//,真正的
如果是在支持ES5的浏览器中,用这样的方式自然没什么问题,但是如果是在IE9以下版本,这个方法并未受到支持,这时候我们就要用别的方式来判断数组。
<强>二、运算符强>
一般来说,instanceof关键字,是用来判断某个元素是否某对象构造函数实例。在数组判断上,instanceof关键字也可以进行数组的判定。
const arr =, (1,, 2,, 3,, 4] arr instanceof  Array ,//,真正的
instanceof支持的浏览器版本比较多,所以一般来说,用instanceof判断,会比Array.isArray判定的范围要广泛。
<强>三、toString 强>
对象的toString方式也可以判定数组类型,一般来说这种方式的判定是各大库的一种数组。isArray的代替实现。
例如,polyfill中,就是如此实现:
if (! Array.isArray), {=,Array.isArray 函数(参数),{ return 才能Object.prototype.toString.call (arg),===, & # 39; [object 数组]& # 39;; ,}; } const arr =, (1,, 2,, 3,, 4] Object.prototype.toString.call (arr),===, & # 39; [Object 数组)& # 39;,,//,真正的
<强>四,构造函数强>
除了以上的方式之外,我们还可以通过构造函数来判定:
const arr =, (1,, 2,, 3,, 4] arr.constructor ===, Array //,真的 arr.__proto__.constructor ===, Array //真正的
<强>弊端
强>
运算符和构造函数的判定也存在一些弊端,他们判定的数组必须定义在同一个页面,否则将会判定为假的。
如果在iframe中的数组判定,就会出错。
var iframe =, document.createElement (& # 39; iframe # 39;); document.body.appendChild (iframe); 时间=xArray window.frames [window.frames.length-1] .Array; var arr =, new xArray (1、2、3),,//, (1、2、3)//,Correctly checking  for 数组 Array.isArray (arr);//,真的//,Considered 有害,because 并# 39;t work through iframes arr instanceof 数组;//,假的 数组arr.constructor ===,,,//,假
由上述几个方法判定,可以得出,其实polyfill的判定是最合理的,也最具有兼容性的一种判定。
利用toString判定,胜出。
感谢你能够认真阅读完这篇文章,希望小编分享的“JavaScript怎样判断数组类型”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!