前端/移动开发面试题更新 2026-08-05

请解释 JavaScript 中的类数组对象指的是什么,并说明有哪几种常见方法可以将类数组对象转换为真正的数组?

前端/移动开发技术原理JavaScript

考察说明

考查对 JavaScript 类数组对象概念的理解以及常见转换方法的掌握。

回答思路

  1. 【回答框架 1】类数组对象是指具有 length 属性和索引访问能力的对象,例如 arguments、DOM 元素集合(HTMLCollection)等,它们不是 Array 类型,因而没有数组原型上的 push、map 等方法。
  2. 【回答框架 2】转换方法一:使用 Array.prototype.slice.call(obj) 或 [].slice.call(obj),通过借用数组方法将类数组对象转换为数组。
  3. 【回答框架 3】转换方法二:使用 Array.from(obj),ES6 新方法,可接受类数组对象或可迭代对象并返回数组。
  4. 【回答框架 4】转换方法三:使用扩展运算符 [...obj],但仅适用于可迭代对象,对于类似 arguments 的对象(可迭代)可行,而某些类数组对象可能不可迭代,需注意兼容性。
  5. 【关键点 1】类数组对象拥有 length 和索引,但不具备数组方法。
  6. 【关键点 2】Array.from 是推荐方式,既支持类数组也支持可迭代对象。
  7. 【关键点 3】Array.prototype.slice.call 是经典转换方式,注意低版本兼容性。
  8. 【关键点 4】扩展运算符只对可迭代对象有效。
  9. 【易错点 1】扩展运算符对不可迭代的类数组对象(如部分旧环境中的 arguments)会报错。
  10. 【易错点 2】转换后的数组是浅拷贝,嵌套对象引用不变。