Javascript Function.prototype.apply.bind用法?

Javascript Function.prototype.apply.bind用法?,javascript,Javascript,我非常了解以下方面: Function.prototype.bind.apply(f,参数) 解释-使用原始的(如果存在)bind方法,在f上使用参数(其第一项将用作此的上下文) 此代码可用于(例如)通过带参数的构造函数创建新函数 例如: function newCall(Cls) { return new (Function.prototype.bind.apply(Cls, arguments)); } 执行: var s = newCall(Something, a, b, c

我非常了解以下方面:

Function.prototype.bind.apply(f,参数)

解释-使用原始的(如果存在)
bind
方法,在
f
上使用
参数
(其第一项将用作
的上下文)

此代码可用于(例如)通过带参数的构造函数创建新函数

例如:

function newCall(Cls) {
    return new (Function.prototype.bind.apply(Cls, arguments));
 }
执行:

var s = newCall(Something, a, b, c);
但是我遇到了这样一个:
Function.prototype.apply.bind(f,参数)
//单词交换

问题:


因为很难理解其含义-在什么用法/场景中我会使用此代码

这用于修复
.apply
的第一个参数

例如,从数组中获取最大值时,需要执行以下操作:

var max_value = Math.max.apply(null, [1,2,3]);
但您希望将第一个参数固定为
null
,因此可以通过以下方式创建新函数:

var max = Function.prototype.apply.bind(Math.max, null);
然后你可以做:

var max_value = max([1,2,3]);

如果您不关心
这个
并且不想创建匿名函数(使用
绑定
),可以使用
应用
.Related-非常好的示例为什么将null作为参数传递给bind很重要?@sAs59在
生成的数学的第一个参数上提供永久的null参数。max.apply
用于
max
变量。例如,当调用以下命令时:
max([1,2,3])
。调用
Math.max.apply(null[1,2,3])
。而对于
Function.prototype.apply.bind(Math.max)
,为
max([1,2,3])
生成的代码只是
Math.max.apply([1,2,3])
,这将给出不正确的结果。Math.max.apply的第一个参数将分配给
引用,第二个参数(数组)将传递给函数的实际参数。如果没有空值,
[1,2,3]
将转到
this
@sAs59,那么Math.max的实际参数将不会收到任何结果。