arguments

arguments 转数组

一般使用下面的方法来将 arguments 转换成数组:css

Array.prototype.slice.call(arguments);

  还有一个更简短的写法:数组

[].slice.call(arguments);

  

在这里,只是简单地调用了空数组的 slice 方法,而没有从 Array 的原型层面调用。app

为何上面两种方法能够转换呢?函数

首先,slice 方法获得的结果是一个数组,参数即是 arguments。事实上,知足必定条件的对象都能被 slice 方法转换成数组。看个例子:this

const obj = { 0: "A", 1: "B", length: 2 };
const result = [].slice.call(obj);
console.log(Array.isArray(result), result);

  

将参数从一个函数传递到另外一个函数

function foo() {
    bar.apply(this, arguments);
}
function bar(a, b, c) {
    // logic
}

  

arguments 转数组

Array.from() 是个很是推荐的方法,其能够将全部类数组对象转换成数组。prototype

 数组与类数组对象

数组具备一个基本特征:索引。这是通常对象所没有的。code

const obj = { 0: "a", 1: "b" };
const arr = [ "a", "b" ];

  咱们利用 obj[0]arr[0] 都能取得本身想要的数据,但取得数据的方式确实不一样的。obj[0] 是利用对象的键值对存取数据,而arr[0] 倒是利用数组的索引。事实上,Object 与 Array 的惟一区别就是 Object 的属性是 string,而 Array 的索引是 number。对象

 ES6 中的 arguments

扩展操做符

function func() {
    console.log(...arguments);
}

func(1, 2, 3);

  执行结果是:blog

1 2 3

  简洁地讲,扩展操做符能够将 arguments 展开成独立的参数。索引

相关文章
相关标签/搜索