我非常了解usages:
Function.prototype.bind.apply(f,arguments)
说明 - 使用
bind
上的原始(如果存在)f
方法arguments
(其第一项将用作this
的上下文)
此代码可用于(例如)通过带参数的构造函数创建新函数
示例:
function newCall(Cls) {
return new (Function.prototype.bind.apply(Cls, arguments));
}
执行:
var s = newCall(Something, a, b, c);
但是我遇到过这个:Function.prototype.apply.bind(f,arguments)
//单词交换
问题:
因为很难理解它的含义 - 在什么用法/场景中我会使用这段代码?
答案 0 :(得分:30)
这用于修复.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]);