Javascript 为什么我的var在使用类时未定义?
我是JavaScript新手,为什么Index.js第7行的Javascript 为什么我的var在使用类时未定义?,javascript,node.js,express,Javascript,Node.js,Express,我是JavaScript新手,为什么Index.js第7行的this.main没有定义 Main.js class Main { constructor(hostname, port) { this.hostname = hostname; this.port = port; } init() { const express = require("express"); const app = expres
this.main
没有定义
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)代码>
到
它是有效的,为什么会这样?当您将indexI.handle
传递给app.get
时,您只是传递了函数,函数范围内的此
不是索引的实例
试试这个
app.get("/", indexI.handle.bind(indexI));
当您将indexI.handle
传递给app.get
时,您只是传递函数,函数范围内的此
不是索引的实例
试试这个
app.get("/", indexI.handle.bind(indexI));
如果您将代码放入代码段,人们可以尝试运行它并看到错误。您可以编辑您的问题并使用
按钮添加代码段。为了获得最佳实践,请避免在方法中写入require
,因为在应用程序启动时没有准备好依赖项,因此可能会出现意外的运行时错误或其他问题。如果将代码放入代码段,人们可以尝试运行它并看到错误。您可以编辑您的问题并使用
按钮添加代码段。为了获得最佳实践,请避免在方法中写入require
,您可能会遇到意外的运行时错误或其他问题,因为您在应用程序启动时没有准备好依赖项。这是有效的。我还用找到的另一个补丁编辑了我的问题。您的答案是否比我的编辑更好?两者都以相同的方式解决了问题,但我更喜欢.bind()
而不是包装函数,因为它可能更具动态性。您的答案缺少一个)
:p@JaromandaX,P.S.untestedIt有效。我还用找到的另一个补丁编辑了我的问题。您的答案是否比我的编辑更好?两者都以相同的方式解决了问题,但我更喜欢.bind()
而不是包装函数,因为它可能更具动态性。您的答案缺少一个)
:p@JaromandaX,P.S.未经测试