为什么在使用类时未定义我的var?

时间:2019-04-13 04:48:53

标签: javascript node.js express

我是JavaScript新手,为什么this.main在Index.js第7行中未定义?

Main.js

class Main {

    constructor(hostname, port) {
        this.hostname = hostname;
        this.port = port;
    }

    init() {
        const express = require("express");
        const app = express();

        console.log("Starting server on port: " + this.port);
        app.listen(this.port);

        const index = require("./index/Index");
        const indexI = new index(this);

        app.get("/", indexI.handle);
    }
}

module.exports = Main;

Index.js

class Index {
    constructor(main) {
        this.main = main;
    }

    handle(req, res) {
        return res.send("MAIN: " + this.main);
    }
}

module.exports = Index;

我需要我的Index.js才能访问Main.js类实例。

编辑:

我发现如果我改变了: app.get("/", indexI.handle);

app.get("/", (req, res) => {indexI.handle(req, res)});

有效,为什么呢?

1 个答案:

答案 0 :(得分:2)

当您将indexI.handle传递给app.get时,您只是在传递函数,该函数范围内的this不是Index的实例。

尝试一下

app.get("/", indexI.handle.bind(indexI));