类数组对象

类数组对象的定义、常见场景及转换为数组的方法

问题

什么是类数组对象?如何将其转换为真正的数组?

解答

什么是类数组对象

类数组对象是指拥有 length 属性和若干索引属性的对象。它们和数组类似,但不能调用数组的方法。

常见的类数组对象包括:

  • arguments 对象
  • DOM 方法的返回结果(如 document.querySelectorAll()
  • 函数对象(length 属性表示可接收的参数个数)

转换为数组的方法

方法 1:使用 Array.prototype.slice.call()

Array.prototype.slice.call(arrayLike);

方法 2:使用 Array.prototype.splice.call()

Array.prototype.splice.call(arrayLike, 0);

方法 3:使用 Array.prototype.concat.apply()

Array.prototype.concat.apply([], arrayLike);

方法 4:使用 Array.from()(推荐)

Array.from(arrayLike);

关键点

  • 类数组对象具有 length 属性和索引属性,但不是真正的数组
  • 类数组对象无法直接调用数组方法
  • Array.from() 是 ES6 提供的标准转换方法,语法最简洁
  • 也可以使用扩展运算符 [...arrayLike] 进行转换(适用于可迭代对象)