javascript中详解的类数组

  介绍

这篇文章给大家介绍详javascript中解的类数组,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

什么是类数组

顾名思义,这玩意儿肯定是个长得像数组,但又不算数组的东西。那到底是个啥,其实它就是一个对象,一个长的像数组的对象。

和数组的区别

那类数组和数组有啥区别:
1,都有长度属性
2类数组也可以对循环遍历,有的类数组还可以通过的遍历
3类数组不具备数组的原型方法,因此类数组不可调用相关数组方法(如,推、slicec concat等等)

都有哪些类数组

常见的类数组有

<李>

函数的参数参数

<李>

通过getElementsByTagName, getElementsByClassName, getElementsByName等方法获取的dom列表(也叫HTMLCollection)

<李>

通过querySelectorAll()方法获取的节点列表节点列表

下面,我们来分别看一下这3类类数组

<强>参数

参数是javascript的一个关键字。专指函数的参数集合,它包含了函数的所有参数以及其他属性。它无需定义,可直接在函数体内使用

function 参数(a, b, c), {   console.log(参数)   console.log (typeof 参数)   console.log ({} .toString.call(参数)   }      args(& # 39;一个# 39;,,& # 39;b # 39;,, & # 39; c # 39;)

我们看看输出结果

详javascript中解的类数组

可以看的出,参数包含所有参数,并且存在长度属性,同时可以看的出,他的类型是对象,并且转换为字符串后是对象参数,代表是参数对象。同时,可以看的到,他还有一个属性被,而这个属性的值好像就是我们定义的这个函数体,那么我们输出看一下

function 参数(a, b, c), {   console.log (arguments.callee)   }      args(& # 39;一个# 39;,,& # 39;b # 39;,, & # 39; c # 39;)

详javascript中解的类数组

可以看的到,输出的确实是我们函数自己。那既然表示的自己,请不要随便去调用这个属性,因为一旦调用,会不断的调用自己,进入死循环,直到栈溢出。就像下面这样

function  args  (a, b, c), {   ,console.log (123)   ,arguments.callee ()   }      args(& # 39;一个# 39;,,& # 39;b # 39;,, & # 39; c # 39;)

详javascript中解的类数组

<强> dom列表(HTMLCollection)

这一类是指通过getElementsByTagName或者getElementsByClassName或者getElementsByName获取到的dom列表的集合。

& lt; div>今天天气不太好& lt;/div>   & lt; div>因为下雨了& lt;/div>   & lt; script>   ,var  domList =, document.getElementsByTagName (& # 39; div # 39;)   ,console.log (domList)   ,console.log (typeof  domList)   ,console.log ({} .toString.call (domList))   & lt;/script>

详javascript中解的类数组

可以看的出,domList也存在长度属性,并且,转换为字符串后是对象HTMLCollection。代表是HTMLCollection对象

<强>节点列表(节点列表)

通过document.querySelectorAll()所获取的节点的集合

& lt; div 类=癮bc"在今天天气不太好& lt;/div>   & lt; div 类=癮bc"祝辞因为下雨了& lt;/div>   & lt; script>   ,var  nodeList =, document.querySelectorAll (& # 39; div # 39;)   ,console.log(节点列表)   ,console.log (typeof 节点列表)   ,console.log ({} .toString.call(节点列表)   & lt;/script>

详javascript中解的类数组

可以看的出,节点列表同样存在长度属性,且转换后成字符串是对象节点列表,代表是节点列表对象。该对象是一个符合迭代器接口规范的对象,故它可以…的被遍历(什么是迭代器我就不在这里讲述了,大家可以自己去看什么是迭代器)

特点

类数组都不存在数组的原型方法,但当类数组需要调用数组方法去做任何事情时,可以通过以下方式

<李>

利用电话,申请进行方法借用,借用数组的各自方法

<李>

将类数组转换为数组。然后再调用数组方法

javascript中详解的类数组