可绑定和可调用模式的用途是什么?

时间:2014-08-19 19:34:00

标签: javascript functional-programming

我之前看到过这一小段代码,并且从来没有真正花时间绕过它的工作。

var bind = Function.bind;
var call = Function.call;

var bindable = bind.bind(bind);
var callable = bindable(call);

我在概念和实践中理解.bind.call做了什么,但创建上述bindablecallbable函数的好处,优势或实际用途是什么? ?

以下是可绑定用例的上下文示例。

var bound = bindable(db.find, db).apply(null, arguments);
var findable = bindable(db.find, db);
var bound = findable.apply(null, arguments);
var bound = findable(1, 2, 3);

这种模式可以用于什么?

1 个答案:

答案 0 :(得分:3)

callable实际上是

的结果
bind.bind(call);

“执行”摘要是callable函数允许您将一个函数设计为在某个prototype对象上作为函数运行,并创建一个新函数,该函数接受一个参数用作价值this

作为示例,请考虑Array原型上的.slice()方法。它通常用于将节点列表或arguments结构之类的东西转换为数组。这通常是这样做的:

var args = [].slice.call(arguments, 0);

callable函数让我们创建一个独立的函数,它的工作方式类似:

var cslice = callable(Array.prototype.slice);

var args = cslice(arguments, 0);

现在,无论这是有用还是不作为某种编程风格的基石,我都不会说。