为什么方法作为参数传递不会在这里工作

时间:2015-06-19 09:20:41

标签: 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, res, next){

  auth.beginOauth(res.redirect);

});

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

1 个答案:

答案 0 :(得分:3)

可能是执行上下文不同。

当您说res.redirect(redirectUrl)时,this方法中的redirect指的是res对象(除非使用自定义执行上下文),但是当您通过{时{1}}作为回调,当调用回调时,上下文丢失。

res.redirect