4

我知道调用并在 javascript 中应用,但是 javascript Call 和 Apply 之间的区别到底是什么??另一件事我发现一些代码像这样一起使用它:

  function doSomething() {
    return Function.prototype.call.apply(Array.prototype.slice, arguments);
}

是一样的..

Array.prototype.slice.apply(arguments)

为什么我们要同时使用 call 和 apply 呢?

4

2 回答 2

4

不,不一样。Array.prototype.slice.apply(arguments)在当前argument对象上应用切片函数,同时Function.prototype.call.apply(Array.prototype.slice, arguments);在作为第一个参数提供的数组上调用切片函数。

使用新的 EcmaScript 语法,这样的事情可能会变得更容易。你doSomething的相当于

function doSomething(array, ...)
    array.slice(...); // assuming array is really an array
}

而第二个相当于

function (...) {
    arguments.slice(); // assuming argument objects are actual arrays
}
于 2012-10-26T13:48:46.067 回答
1

一样

Array.prototype.slice.apply(arguments)

是的,我也认为它是一样的..!!

于 2012-10-28T06:40:45.177 回答