为什么在Express路由中使用对象的方法时,“ this”未正确绑定?

时间:2019-11-29 07:50:59

标签: javascript node.js express

在我的项目中,我尝试使用对象的方法作为快速路由,但是this。[objectProperty]的值未定义。

这是我的代码:

    function OauthFlow(provider, authorization_uri) {
        return {
            provider: provider
        }
    }

    function testMethod(req, res) {
        return `Provider is set to ${this.provider}`
    }

    twitter = new OauthFlow("twitter")
    twitter.test = testMethod

    const twitter_app = express()
    twitter_app.use("/test", twitter.test)
    exports.twitter_app = twitter_app

当我模拟来自Firebase Functions Shell的请求时,得到以下输出:

    twitter.get("test")
  

提供商设置为未定义

这是一个类似的版本,它直接记录方法的输出而不使用express,确实在控制台中可以正确运行:

    function OauthFlow(provider, authorization_uri) {
        return {
            provider: provider
        }
    }

    function testMethod() {
        return `Provider is set to ${this.provider}`
    }

    twitter = new OauthFlow("twitter")
    twitter.test = testMethod

    console.log(twitter.test())

此版本返回

  

提供商设置为Twitter

0 个答案:

没有答案