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的实际参数将不会收到任何结果。