Javascript 为什么作为参数传递的方法在这里不起作用

Javascript 为什么作为参数传递的方法在这里不起作用,javascript,node.js,express,Javascript,Node.js,Express,我的Node/Express API中有此代码。它起作用了 router.get('/auth',function(req, res, next){ var callback = function(redirectUrl){ return res.redirect(redirectUrl); } auth.beginOauth(callback); }); 但是如果我把代码修改成这样。这是行不通的- router.get('/auth',function(req, r

我的Node/Express API中有此代码。它起作用了

router.get('/auth',function(req, res, next){

  var callback = function(redirectUrl){
    return res.redirect(redirectUrl);
  }

  auth.beginOauth(callback);

});
但是如果我把代码修改成这样。这是行不通的-

router.get('/auth',function(req, res, next){

  auth.beginOauth(res.redirect);

});

为什么直接传递方法时,它不起作用?

可能是因为执行上下文不同

当您说
res.redirect(redirectUrl)
时,
redirect
方法中的
这个
指的是
res
对象(除非使用自定义执行上下文),但是当您将
res.redirect
作为回调传递时,调用回调时上下文将丢失

router.get('/auth',function(req, res, next){   
    auth.beginOauth(res.redirect.bind(res));
});

可能是执行上下文不同

当您说
res.redirect(redirectUrl)
时,
redirect
方法中的
这个
指的是
res
对象(除非使用自定义执行上下文),但是当您将
res.redirect
作为回调传递时,调用回调时上下文将丢失

router.get('/auth',function(req, res, next){   
    auth.beginOauth(res.redirect.bind(res));
});

可能是执行上下文不同

当您说
res.redirect(redirectUrl)
时,
redirect
方法中的
这个
指的是
res
对象(除非使用自定义执行上下文),但是当您将
res.redirect
作为回调传递时,调用回调时上下文将丢失

router.get('/auth',function(req, res, next){   
    auth.beginOauth(res.redirect.bind(res));
});

可能是执行上下文不同

当您说
res.redirect(redirectUrl)
时,
redirect
方法中的
这个
指的是
res
对象(除非使用自定义执行上下文),但是当您将
res.redirect
作为回调传递时,调用回调时上下文将丢失

router.get('/auth',function(req, res, next){   
    auth.beginOauth(res.redirect.bind(res));
});

如果相当含糊,就不起作用。您看到了什么错误或问题?这可能与以下事实有关:
callback
传入时,
beginOauth
返回一个值。但当您传入
res.redirect
时,它不是。@davintroon我不是在寻找错误解决方案。JS支持作为参数传递的方法。你能更具体地说明什么是“不起作用”吗:如果非常模糊,就不能起作用。您看到了什么错误或问题?这可能与以下事实有关:
callback
传入时,
beginOauth
返回一个值。但当您传入
res.redirect
时,它不是。@davintroon我不是在寻找错误解决方案。JS支持作为参数传递的方法。你能更具体地说明什么是“不起作用”吗:如果非常模糊,就不能起作用。您看到了什么错误或问题?这可能与以下事实有关:
callback
传入时,
beginOauth
返回一个值。但当您传入
res.redirect
时,它不是。@davintroon我不是在寻找错误解决方案。JS支持作为参数传递的方法。你能更具体地说明什么是“不起作用”吗:如果非常模糊,就不能起作用。您看到了什么错误或问题?这可能与以下事实有关:
callback
传入时,
beginOauth
返回一个值。但当您传入
res.redirect
时,它不是。@davintroon我不是在寻找错误解决方案。JS支持作为参数传递的方法。你能更具体地说明什么是“不起作用的”:坑工程吗。你是对的,因为上下文不正确。它是有效的。你是对的,因为上下文不正确。它是有效的。你是对的,因为上下文不正确。它是有效的。你是对的,因为上下文不正确。