Javascript 为什么这里的apply()只接受一个参数而不是两个参数?

Javascript 为什么这里的apply()只接受一个参数而不是两个参数?,javascript,Javascript,我正在读《Javascript:好的部分》一书。我被下面的代码弄糊涂了 Function.method('curry', function ( ) { var slice = Array.prototype.slice, args = slice.apply(arguments), that = this; return function ( ) { return that.apply(null, args.concat(sli

我正在读《Javascript:好的部分》一书。我被下面的代码弄糊涂了

Function.method('curry', function (  ) {
    var slice = Array.prototype.slice,
        args = slice.apply(arguments),
        that = this;
    return function (  ) {
        return that.apply(null, args.concat(slice.apply(arguments)));
    };
});

其中是
切片中的
null
。应用(参数)

参数作为上下文(
)而不是函数的参数传递


它与
arguments.slice()
等效,只是
arguments.slice()
不存在。

这相当于在没有参数的数组上调用
slice()
,也就是说,它返回一个包含原始数组所有元素的数组。在本例中,“arguments”不是真正的数组,因此在其上调用array.prototype.slice实际上会将其转换为一个数组。

正在调用两个不同的函数。 在第一种情况下

var slice = Array.prototype.slice,
args = slice.apply(arguments),
有关详细说明,请参阅

正在调用
Array.prototype.slice的apply方法,
,该方法将传递给函数的参数转换为数组

在第二个函数中,调用函数的apply方法。这个函数的用法和细节在这里有很好的定义