简体   繁体   中英

Sharing Variables between functions in ES6 Classes

I'm dabbling around with ES6 Syntax in Node.js. As a starting point I just tried creating a simple class that configures and returns an Express server - not sure if this would be good or not in production, though.

I'm having trouble with accessing the classes member variables in other functions. Take a look at the code below:

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

The constructor seems to be working okay, although when I call the start method I get an error that the variable this._server is undefined . I thought the this keyword would be able to access the variables. I have tried replacing the this accessing method to using HttpServer._server but with no luck. Any tips or advice would be appreciated!

If I've made silly mistakes, please forgive me, I haven't hopped on the ES6 train before this!

  1. It is necessary to remove the check for null

  2. There is no need to return anything from constructor


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)
        })
    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM