在JavaScript中绑定回调函数? (不要与Function.prototype.bind()混淆)
|
我一直将脚趾插入Javascript中,现在看下面的代码:
var router = new(journey.Router)({
...
});
router.root.bind(function (res) { res.send(\"Welcome\") });
问题:上面绑定的根函数是什么?此绑定有什么作用?
我知道\'bind()\'应该将函数的执行作为上下文绑定到指定的对象。我不明白如何将一个函数/方法绑定到另一个函数。我看过的所有参考都在谈论绑定到对象。
没有找到相关结果
已邀请:
2 个回复
咖哀烈
这只是权宜之计
在这种情况下,绑定调用会将提供的回调函数与定义为root的路由相关联,这样,与根路径(\'/ \')匹配的任何请求都将由字符串\'Welcome \'回答。 更新 在进一步研究了travel.js源代码之后,看来在这种情况下使用bind()根本不是示例。 而是将此特定的bind()定义为第131行的trip.js中route()返回的对象的函数(依次由get()调用),并且仅用于设置(或绑定)处理程序针对特定路线。 重要说明:对bind()的此调用与Function.prototype.bind()不同。 我将先前的答案留在下面,因为我相信在这种情况下,有关咖喱的信息仍然有价值。 Function.prototype.bind()的这种用法称为\'currying \',用于提供一个新函数,该函数已经为其一个或多个预期参数提供了值。 一个简单的例子是: 函数addSome(amount,value){ 返回值+金额; } 可以使用它来产生新功能: var addOne = addSome.bind(1); 并与以下内容完全相同: 函数addOne(value){ 返回addSome(1,value); } 咖喱是[功能编程]的一项功能。 有关bind()的说明,请参见[bind-MDN Docs];有关此技术的正式定义,请参见[currying]。 [函数式编程]:http://zh.wikipedia.org/wiki/Functional_programming [绑定-MDN文档]:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind [currying]:http://en.wikipedia.org/wiki/Currying
缉康怪