gpt4 book ai didi

javascript - 在 Javascript 中绑定(bind)回调函数? (不要与 Function.prototype.bind() 混淆)

转载 作者:搜寻专家 更新时间:2023-11-01 00:34:24 25 4
gpt4 key购买 nike

我一直在尝试 Javascript,现在正在查看以下代码:

    var router = new(journey.Router)({  
...
});

router.root.bind(function (res) { res.send("Welcome") });

问题:上面绑定(bind)的root函数是什么?这个绑定(bind)有什么作用?

我理解“bind()”应该将函数的执行绑定(bind)到指定的对象作为上下文。我不明白一个函数/方法如何绑定(bind)到另一个函数。我看过的所有引用资料都在谈论绑定(bind)到一个对象。

最佳答案

'root' 是在 journey.js(第 145 行)中定义的 getter 方法

get root() {
return this.get('/');
},

这只是一个方便的简写

get('/')

在此上下文中,对 bind 的调用会将提供的回调函数与定义为根的路由相关联,这样任何与根路径 ('/') 匹配的请求都将由字符串 'Welcome' 回答。

更新

进一步检查 journey.js 源代码后,在这种情况下使用 bind() 似乎根本不是柯里化(Currying)的例子。

相反,这个特定的 bind() 被定义为 route() 返回的对象的函数(在 journey.js 的第 131 行又被 get() 调用),并且仅用于设置(或 < em>绑定(bind)) 特定路由的处理程序。

重要:对 bind() 的调用与 Function.prototype.bind() 相同。

我将在下面留下我之前的回答,因为我相信有关柯里化(Currying)的信息在这种情况下仍然有值(value)。

<删除>Function.prototype.bind() 的这种使用被称为“currying”,用于提供一个新函数,该函数已经为一个或多个预期参数提供了值。柯里化(Currying)的一个简单示例是,如果您假设: 功能 addSome(数量,值(value)){ 返回值+金额; }它可以被柯里化(Currying)以产生一个新功能: var addOne=addSome.bind(1);并且与以下内容完全相同: 函数 addOne(值) { 返回 addSome(1,值); }Currying 是 [函数式编程] 的一个特性。请参阅 [bind - MDN Docs] 了解 bind() 的解释,并参阅 [currying] 了解此技术的正式定义。【函数式编程】:http://en.wikipedia.org/wiki/Functional_programming[绑定(bind) - MDN 文档]:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind[柯里化(Currying)]:http://en.wikipedia.org/wiki/Currying

关于javascript - 在 Javascript 中绑定(bind)回调函数? (不要与 Function.prototype.bind() 混淆),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com