Javascript和Node的新手。我在Node中使用express
来创建一个简单的Web应用程序。在试图分离问题时,我遇到了麻烦。
代码如下所示:
var get_stuff = function(callback) {
another.getter(args, function(err, data) {
if (err) throw err;
data = do_stuff_to(data);
callback(data);
});
};
app.get('/endpoint', function(req, res){
get_stuff(res.send);
};
但是,当我运行此操作时,我收到此错误:TypeError: Cannot read property 'method' of undefined at res.send
。破解的快速代码就像这样开始:
res.send = function(body){
var req = this.req;
var head = 'HEAD' == req.method;
在我看来,我构建回调的方式是在this
方法中失去send
。但我不确定如何解决它。有小费吗?谢谢!
答案 0 :(得分:3)
致电.bind
:
get_stuff(res.send.bind(res));
并查看MDN documentation about this
以了解其工作原理。 this
的值由如何调用函数确定。将其称为“正常”(回调可能发生的情况),例如
func();
将this
设置为全局对象。仅当函数作为对象方法调用时(或者this
明确设置为.bind
,.apply
或.call
时),this
指的是对象:
obj.fun(); // `this` refers to `obj` inside the function
.bind
允许您在不调用函数的情况下指定this
值。它只返回一个新函数,类似于
function bind(func, this_obj) {
return function() {
func.apply(this_obj, arguments);
};
}