Javascript 为什么这里的apply()只接受一个参数而不是两个参数?
我正在读《Javascript:好的部分》一书。我被下面的代码弄糊涂了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
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方法。这个函数的用法和细节在这里有很好的定义