在节点module.exports中的对象方法中使用'this'

刘易斯

这是我的模块:

module.exports = {

    name: '',
    email: '',
    id: '',
    provider: '',
    logged_in: false,

    isLoggedIn: function(req, res, next){
        console.log(this);

    }   
};

我这样导入:

var user = require('user');

当我将isLoggedIn函数用作Express的中间函数时,控制台将记录全局Node对象。如何获取记录功能所在的对象的信息?

编辑

所以我有我上面定义的用户对象。根据各种因素,此对象将填充到程序的其他位置。我用来创建一个中间件函数来表示要快速测试用户的登录状态。放置此函数的明显位置似乎在用户对象中,但是我需要访问logging_in属性以对其进行正确评估。因此使用this.logged_in。

四人

当您将其作为中间函数传递时,我相信您正在做类似

func(.., user.isLoggedIn, ..)

当您这样做时,实际上是isLoggedIn在与user对象分离因此,默认情况下,如果不在严格模式下,this将引用全局对象。要解决此问题,您应该bind像这样使用函数

func(.., user.isLoggedIn.bind(user), ..)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章