Javascript:如何使用apply方法传递参数数组,然后在被调用函数中访问它

Javascript:如何使用apply方法传递参数数组,然后在被调用函数中访问它,javascript,arguments,Javascript,Arguments,我对Function.prototype.apply方法有问题。以下是我的测试来源: function callMe(array){ var s = ""; s += array; //<--- I want to access the array's member here, eg. array[0], array[1], ... return s; } var myArr = ["begin", 1, 2, 3, 4, "end"]; console.log(c

我对Function.prototype.apply方法有问题。以下是我的测试来源:

function callMe(array){
    var s = "";
    s += array; //<--- I want to access the array's member here, eg. array[0], array[1], ...
    return s;
}
var myArr = ["begin", 1, 2, 3, 4, "end"];
console.log(callMe.apply(this, myArr));
上面代码的输出只是“begin”,而我希望它是
[“begin”,1,2,3,4,“end”]
。 这里怎么了?因为据我所知,
Function.prototype.apply
方法与单独的参数一起使用,如
callMe.apply(这是arrayOfArguments)
,这不起作用。然而,方法
call()
工作正常。 在上面的例子中,我只是用call方法替换apply方法,它返回的正是我想要的。我做错了什么? 我想使用apply方法,而不是call方法。

这是因为需要两个参数。第二个参数是参数数组,因此您的代码执行如下操作:

function callMe(array){
    var s = "";
    s += array;
    return s;
}
var myArr = ["begin", 1, 2, 3, 4, "end"];
callMe.apply(this, myArr); //SAME AS callMe(myArr[0],myArr[1],myArr[2],myArr[3],myArr[4],myArr[5]);
callMe.apply(this, [myArr]);
因此
callMe.apply(this,myArr)
在本例中与
callMe(myArr[0])
相同

你必须这样做:

function callMe(array){
    var s = "";
    s += array;
    return s;
}
var myArr = ["begin", 1, 2, 3, 4, "end"];
callMe.apply(this, myArr); //SAME AS callMe(myArr[0],myArr[1],myArr[2],myArr[3],myArr[4],myArr[5]);
callMe.apply(this, [myArr]);

或者像前面的答案(ft1)一样。

太棒了,很有魅力。遗憾的是,这一小段示例在其他编码站点中没有明确提到。非常感谢Wojciechowski。没问题:)很高兴见到你