
JavaScript: HTMLCollection/NodeList 转换为真数组及示例
版权申诉

在JavaScript中,HTMLCollection和NodeList是两种常见的伪数组对象,它们是由DOM API创建的,用于表示HTML文档中的元素集合,例如form元素、选择框选项、通过getElementsByTagName或getElementsByClassName获取的元素等。这些对象虽然看起来像数组,但它们并不真正属于数组类型,因为它们缺乏数组的方法,如push、pop、shift等。
由于伪数组在某些场景下可能需要操作,比如使用数组方法或者传递给其他函数时需要转换,所以开发者需要将它们转换为真正的数组。为此,我们可以创建一个名为`makeArray`的工具函数,该函数采用了一种巧妙的方法来实现这一转换。它使用`Array.prototype.slice.call()`,这是一个JavaScript特性,允许我们把一个非数组对象的行为模拟成数组,从而获取其length属性并按索引访问元素。
`makeArray`函数的基本原理是:
1. 如果对象是真正的数组,那么直接使用`slice.call(obj, 0)`就可以得到一个新数组的引用。
2. 如果对象是伪数组,但不是真正的数组,比如HTMLCollection或NodeList,那么遍历这个对象的length属性,依次将每个元素添加到新数组`res`中。
对于HTMLCollection和NodeList这样的伪数组,`makeArray`函数会确保返回的是一个真正的数组,从而可以进行数组的常规操作。
例如,我们可以看到一个函数`fun`的定义,它接收一个参数列表作为arguments,并使用`makeArray`将其转换为真正的数组。这使得我们可以在函数内部安全地处理这些参数,就像处理普通数组一样。
测试代码展示了如何使用`makeArray`函数处理三种不同的伪数组情况:
1. arguments对象:这是JavaScript中一个特殊的伪数组,代表函数调用时传递的所有参数。
2. document.documentElement.childNodes:获取文档根节点的所有子节点。
3. 页面上的多个段落元素,通过变量els获取。
将HTMLCollection和NodeList等伪数组转换成真正的数组是JavaScript编程中的常见需求,通过`makeArray`这样的工具函数,可以方便地进行数据操作和函数调用,提高代码的灵活性和可维护性。在处理这些非数组类型的集合时,理解这种转换机制至关重要。
相关推荐





















惚如远行客
- 粉丝: 0
最新资源
- Python实现的蒙特卡洛游戏解析
- 深入理解Java中的Hello World服务架构
- Java系统管理框架解析与应用
- 全栈开放技术深度探索与实践
- 使用JavaScript开发视频聊天应用与Socket通信
- JavaScript项目开发团队SE3350的探索与实践
- JavaScript领域的OSCards项目介绍
- MCW10E-modloader的介绍与功能概述
- HTML开发的WeatherApp天气应用功能介绍
- 使用React构建食品评级交互式UI界面
- JavaScript开发的管理系统详解
- Node.js开发微信小程序服务的技术实现
- Ruby实现SAML与开发者身份验证的omniauth片段解析
- HTML训练任务解析与实战指导
- ASFamilyApp:家庭实用Android应用的开发与使用
- Python实现的雪图动态展示技术解析
- bfbbtools:Python压缩包子工具应用详解
- 在FreeBSD上利用lspawn实现Lua语言的spawn功能
- CLEAN代码转换器:免费释放应用程序十六进制值工具
- 电子商务全解析:掌握电商核心技能
- 在线个人作品集管理平台搭建教程
- DonsetPG.github.io:深入HTML架构与设计
- JavaScript快速脚开发指南
- 抽象语法树在信息技术中的应用