首页 > 解决方案 > JavaScript ES6 Spread 运算符可以与类似数组的对象一起使用吗?

问题描述

我发现 Spread 运算符可用于arguments

function foo() {
    [...arr] = arguments;
    console.log(arr, Array.isArray(arr));
}

foo(1, 3, 5);

// note that we could also use function foo(...args) { } to begin with

但不适用于类似数组的对象(它会抛出错误TypeError: undefined is not a function):

let obj = { 0: "abc", 1: 3.14, length: 2 };

[...arr] = obj;
console.log(arr, Array.isArray(arr));

那么Spread 运算符可以与类似数组的对象一起使用吗?

作为旁注,以下内容都可以创建一个数组:

let obj = { 0: "abc", 1: 3.14, length: 2 };
let arr = Array.prototype.slice.call(obj);
console.log(arr, Array.isArray(arr));

let arr2 = Array.from(obj);
console.log(arr2, Array.isArray(arr2));

标签: javascriptecmascript-6spread-syntax

解决方案


推荐阅读