Я занимаюсь синтаксисом ES6 в Node.js. В качестве отправной точки я просто попытался создать простой класс, который настраивает и возвращает сервер 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' is 'null' - это не сработает, потому что это не null, это' undefined', как 'this._server'. Вы никогда не создаете экземпляр 'express'. Кроме того, вам не нужны эти проверки в конструкторе, просто создайте 'this._app = express()' и 'this._server = http.createServer (this._app);' – Mjh
Ну ладно, это имеет смысл. Как бы я установил их как «null», как я пытался использовать «const globals»? – nickcorin
В конструкторе вы инициализируете их «null» с помощью 'this._app = null;'. – Mjh