3

Apply 接受两个参数,一个上下文,第二个参数是一个参数数组。但是,在 JavaScript 中,args 不是数组,而是“类数组对象”。因此,考虑到它不是一个真正的数组,以下代码是否有效:

function firstFunc(){
    secondFunc.apply(someContext,arguments);
}

还是我需要通过这个仪式:

function firstFunc(){
    var realArray=array.prototype.slice(arguments);
    secondFunc.apply(someContext,realArray);
}
4

2 回答 2

5

我假设你的意思arguments不是args。第一个版本很好。MDN在这里这里非常清楚地说明了这一点:

您还可以为 argsArray 参数使用参数。

argsArray可以是像对象一样的数组。

请注意,在 ES5 之前,参数是规则的一个例外,您不能将 apply 与其他类似数组的对象一起使用。在现代 Javascript 引擎中,您可以将 apply 与任何类似数组的对象一起使用。

于 2013-08-27T21:27:32.513 回答
2

您可以使用applywith arguments,而无需调用slice。我一直这样做。

args据我所知, JavaScript 中的这个词并没有什么特别之处。

于 2013-08-27T21:27:09.853 回答