arguments本身並不能調用數組方法,它是一個另外一種對象類型,屬性從0開始排,依次為0,1,2...最后還有callee和length屬性。我們也把這樣的對象稱為類數組
1. Array.prototype.slice.call()
function sum(a, b) { let args = Array.prototype.slice.call(arguments); console.log(args.reduce((sum, cur) => sum + cur));//args可以調用數組原生的方法啦 } sum(1, 2);//3
2. Array.from()
function sum(a, b) { let args = Array.from(arguments); console.log(args.reduce((sum, cur) => sum + cur));//args可以調用數組原生的方法啦 } sum(1, 2);//3
3. ES6展開運算符
function sum(a, b) { let args = [...arguments]; console.log(args.reduce((sum, cur) => sum + cur));//args可以調用數組原生的方法啦 } sum(1, 2);//3
4. 利用concat+apply
function sum(a, b) { let args = Array.prototype.concat.apply([], arguments);//apply方法會把第二個參數展開 console.log(args.reduce((sum, cur) => sum + cur));//args可以調用數組原生的方法啦 } sum(1, 2);//3