javascript - 可绑定(bind)和可调用模式的用途是什么?

标签 javascript functional-programming

我以前见过这个小代码片段,但从未真正花时间去思考它的作用。

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

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

我理解 .bind.call 的概念和实践,但是创建 bindable< 的好处、优势或实际用途是什么callbable 上面的函数?

下面是可绑定(bind)用例的上下文示例。

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);

这个模式有什么用?

最佳答案

callable

的有效结果
bind.bind(call);

“执行”总结是 callable 函数让您可以将设计为在某些 prototype 对象上作为函数运行的函数创建一个接受用作 this 值的参数。

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

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

好吧,callable 函数让我们可以创建一个独立的函数,其工作方式与此类似:

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

var args = cslice(arguments, 0);

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

关于javascript - 可绑定(bind)和可调用模式的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25391594/

相关文章:

javascript - 主干 View 事件不会触发

javascript - 如何消除 div 和 span 之间的差距

javascript - undefined variable ,在渲染方法 React 的 if/else 内部分配

functional-programming - 有 Clojure 原则吗?

haskell - 为什么haskell在a >> b中评估a?

scala - 压缩两个 HashMap(或字典)

javascript - jquery not()函数不与serialize()函数配合

javascript - Zapier-dalać 在 Action Fields (Custom) 字段中包含 u'

kotlin - 我如何在枚举中使用函数引用?

language-agnostic - 玩无限游戏-惰性算术