【发布时间】:2014-08-19 19:33:59
【问题描述】:
我以前见过这种小sn-p 代码漂浮,但从来没有真正花时间去思考它的作用。
var bind = Function.bind;
var call = Function.call;
var bindable = bind.bind(bind);
var callable = bindable(call);
我在概念和实践上都了解 .bind 和 .call 的作用,但创建上述 bindable 和 callbable 函数有什么好处、优势或实际用途?
以下是可绑定用例的上下文示例。
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 可让您将方法转换为函数。例如,bold=callable("".bold);粗体(123);这使得粗体方法通用:能够处理非字符串。这在使用 [].map 和 [].filter 处理不同内容的集合时非常方便。例如:[1,2,3].map(bold) 而不是 [1,2,3].map(function(a){return String(a).bold(); })
-
我的另一个最爱:摆脱 jQuery。例如,删除所有锚点:_=callable([].slice); rem=callable(document.body.remove); _(document.querySelectorAll("a")).map(rem);
标签: javascript functional-programming