我是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)});
有效,为什么呢?
答案 0 :(得分:2)
当您将indexI.handle
传递给app.get
时,您只是在传递函数,该函数范围内的this
不是Index
的实例。
尝试一下
app.get("/", indexI.handle.bind(indexI));