JavaScript怎样判断数组类型

  介绍

这篇文章主要介绍了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怎样判断数组类型”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

JavaScript怎样判断数组类型