Function.prototype.apply.bind用法?

时间:2014-03-11 09:40:38

标签: javascript

我非常了解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) //单词交换

问题:

因为很难理解它的含义 - 在什么用法/场景中我会使用这段代码?

1 个答案:

答案 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]);