Array.prototype.slice.call(参数)vs. Array.prototype.slice.apply(参数)

sta*_*lei 5 javascript prototype

先前的文章讨论了Array.prototype.slice.call(arguments)工作方式,但我不明白为什么要使用call而不是将applyapply用于类似数组的对象,而call将其用于用逗号分隔的对象列表。是不是arguments应该使用类似数组的对象apply,而不是call

小智 4

如果您想将参数传递给数组中的切片而不是一个接一个地传递,那么这是有区别的。你可以这样做

[1, 2, 3, 4, 5, 6, 7]  ---- our example arguments
Array.prototype.slice.call(arguments, 2, 5);
Run Code Online (Sandbox Code Playgroud)

在这里,您传递给切片方法 2 和 5,这些是切片参数,指示您想要将索引 1 处的项目获取到索引处的项目。4. 所以很可能是 3、4、5。

Array.prototype.slice.apply(arguments, [2, 5]);
Run Code Online (Sandbox Code Playgroud)

其作用相同,但切片的参数可以在数组中传递。