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 展開成獨立的參數。索引

相關文章
相關標籤/搜索