我遇到了 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));
我想访问参数,但不想将函数调用中的每个参数指定为callMe.call(this, arg1, arg2, arg3)
. 我想要的是callMe.apply(this, [arg1, arg2, arg3])
,然后,在被调用的函数中,我将访问参数:
array[0] = "yeah";
array[1] = 200;
array[2] = 150;
array[3] = "fine";
上面代码的输出只是“开始”,而我希望它是["begin", 1, 2, 3, 4, "end"]
. 这里有什么问题?因为据我所知,Function.prototype.apply
方法与单独的参数 as 一起使用callMe.apply(this, arrayOfArguments)
,这不起作用。然而,该方法call()
运行良好。例如。在上面的示例中,我只是将 apply 方法替换为 call 方法,它返回的正是我想要的。我做错了什么?我想使用 apply 方法,而不是 call 方法。