我在Node.js中涉及ES6语法。作为一个起点,我只是尝试创建一个简单的类来配置和返回一个Express服务器 - 不知道这是否是好的或不在生产中。在ES6类中的函数之间共享变量
我无法访问其他函数中的类成员变量。看看下面的代码:
import express from 'express'
import http from 'http'
const _server = null
const _app = null
class HttpServer {
constructor (port) {
this._port = port;
if (this._app === null) {
this._app = express()
}
if (this._server === null) {
this._server = http.createServer(this._app)
}
return this._server
}
start (callback) {
this._server.listen(this._port, (error) => {
return callback(error)
})
}
}
export default HttpServer
的构造似乎好工作,但是当我打电话的start
方法我得到一个错误,该变量this._server
是undefined
。我认为this
关键字将能够访问变量。我试图用this
访问方法替换为使用HttpServer._server
,但没有运气。任何提示或建议,将不胜感激!
如果我犯了愚蠢的错误,请原谅我,在此之前我还没有在ES6列车上跳过!
那是因为你如果'这个检查返回任何东西._app'是'null' - 这会失败,因为它不是null,它是'undefined',就像'this._server'一样。你永远不会创建一个'express'的实例。另外,你不需要在构造函数中进行这些检查,只需创建'this._app = express()'和'this._server = http.createServer(this._app);' – Mjh
好吧,这确实有道理。我如何将它们设置为'null'就像我试图用'const globals'做的那样? – nickcorin
在构造函数中,用'this._app = null;'将它们初始化为'null'。 – Mjh