javascript 为什么需要 Array-Like 这样的数据结构?

作者站长头像
站长
· 阅读数 16

突然很好奇,在前端日常开发中,需要经常和 dom 打交道,所以经常要用到 querySelectorAlldocument.body.getChildren 等方法,但是它们的返回值都是一个类数组类型,我们就需要用一些方法,比如拓展运算符、Array.from 等将它们转换为真数组 来进行操作。

问题: 类数组的意义在哪里?dom 的哪些方法为什么不直接返回一个真数组呢?

回复
1个回答
avatar
test
2024-07-18
  1. 兼容性:早期的 Javascript 的数组很简陋,所以很多早期的 API 都没有考虑数组。例如函数的 arguments 对象也是类数组。而 ES6 的剩余参数就是数组
  2. 性能考虑:类数组相较与数组有更好的性能,可以提高 DOM 操作的效率
  3. API 设计:DOM 被设计为不依赖于任何特定语言

尽管 DOM API 看起来与 JavaScript 绑定,但它实际上仅仅是“使用”了 JavaScript 而已。DOM API 规范由 W3C 制定,而 JavaScript 标准由 TC39 委员会制定。他们是两个互不统属的独立组织。JavaScript 标准中不会包含 HTMLElement 等 DOM 相关的东西,DOM API 亦不会依赖于 JavaScript。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容