在ES6类

时间:2016-11-14 10:12:11

标签: javascript node.js express ecmascript-6

我正在尝试使用Node.js中的ES6语法。作为一个起点,我只是尝试创建一个配置并返回Express服务器的简单类 - 但不确定这在生产中是否合适。

我在访问其他函数中的类成员变量时遇到了问题。看看下面的代码:

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._serverundefined。我认为this关键字可以访问变量。我已尝试将this访问方法替换为使用HttpServer._server,但没有运气。任何提示或建议将不胜感激!

如果我犯了愚蠢的错误,请原谅我,在此之前我还没有跳过ES6火车!

1 个答案:

答案 0 :(得分:1)

  1. 必须删除空检查

  2. 无需从构造函数

  3. 返回任何内容
    class HttpServer {
    
        constructor (port) {
            this._port = port
            this._app = express()
            this._server = http.createServer(this._app)
        }
    
        start (callback) {
            this._server.listen(this._port, (error) => {
                return callback(error)
            })
        }
    
    }