Javascript 为什么作为参数传递的方法在这里不起作用
我的Node/Express API中有此代码。它起作用了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
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支持作为参数传递的方法。你能更具体地说明什么是“不起作用的”:坑工程吗。你是对的,因为上下文不正确。它是有效的。你是对的,因为上下文不正确。它是有效的。你是对的,因为上下文不正确。它是有效的。你是对的,因为上下文不正确。