在JavaScript中,你可以使用apply和Args吗?

3

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

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

或者我需要进行这个仪式吗:
function firstFunc(){
    var realArray=array.prototype.slice(arguments);
    secondFunc.apply(someContext,realArray);
}
2个回答

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

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

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

2
你可以使用applyarguments,而不需要调用slice。我经常这样做。
据我所知,在JavaScript中,args一词并没有什么特殊之处。

1
啊,但是arguments有一些特殊之处。它不是一个真正的数组。但是没错,你可以很好地使用apply - Brad
@Brad:你是指“arguments”吗?“args”不是任何东西。 - Dan Tao
@Brad:只是为了澄清:我认为OP明白arguments不是真正的数组。这在问题本身中就有提到。我指出args并不特殊。 - Dan Tao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接