題目描述
将數組
arr
中的元素作為調用函數
fn
的參數
示例
輸入
function (greeting, name, punctuation) {return greeting + ', ' + name + (punctuation || '!');}, ['Hello', 'Ellie', '!']
輸出
Hello, Ellie!
1. 調用函數的方法
詳細的可參照
JavaScript
教程JavaScript函數調用
這裡介紹其中的一種
作為函數方法調用函數
call()
和
apply()
都是用來改變函數内部
this
指向的,但是也可以調用函數
-
call()
執行個體
function myFunction(a, b) {
return a * b;
}
myObject = myFunction.call(myObject, 10, 2); // 傳回 20
-
apply()
執行個體
function myFunction(a, b) {
return a * b;
}
myArray = [10, 2];
myObject = myFunction.apply(myObject, myArray); // 傳回 20
差別:
-
的參數是直接放進去的,第二第三第 n 個參數全都用逗号分隔,直接放到後面。call
-
的所有參數都必須放在一個數組裡面傳進去 。apply
2. 本題解決方法
-
call()
function argsAsArray(fn, arr) {
return fn.call(this,...arr);
}
//let arr = [1, 2, 3];
//...arr -> 1, 2, 3
注:
...
是擴充運算符,可以将數組或者對象轉為用逗号分隔的參數序列
-
apply()
function argsAsArray(fn, arr) {
return fn.call(this,arr);
}