MST

星途 面试题库

面试题:JavaScript 中类数组对象转数组的常见方法及原理

在JavaScript里,类数组对象有length属性且元素可以按索引访问,但不是真正的数组。请列举至少两种将类数组对象转换为数组的常见方法,并简要说明每种方法的原理。例如,arguments对象就是类数组对象,如何将它转成真正的数组?
33.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

以下是将类数组对象转换为数组的常见方法及原理:

  1. 使用 Array.from() 方法 原理:Array.from() 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。对于类数组对象,它会根据对象的 length 属性和索引来提取元素创建数组。 示例:
function test() {
    const argsArray = Array.from(arguments);
    console.log(argsArray);
}
test(1, 2, 3);
  1. 使用扩展运算符 (...) 原理:扩展运算符可以将类数组对象展开成一个个独立的值,然后这些值可以被用于初始化一个新的数组。它会遍历类数组对象的可枚举属性,按照索引顺序获取值。 示例:
function test() {
    const argsArray = [...arguments];
    console.log(argsArray);
}
test(1, 2, 3);
  1. 使用 Array.prototype.slice.call() 方法 原理:slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象,且原数组不会被修改。通过 call() 方法,我们可以改变 slice() 方法内部 this 的指向,使其作用于类数组对象,从而实现转换。 示例:
function test() {
    const argsArray = Array.prototype.slice.call(arguments);
    console.log(argsArray);
}
test(1, 2, 3);