ES6 Родительский класс переопределяет дочерний прототип - PullRequest
0 голосов
/ 26 октября 2018

Я решил написать класс ES6 для сервера Express, но расширенный Express переопределяет дочерний прототип, и нет способа использовать методы и реквизиты, определенные внешним конструктором. Смотрите код:

import Express from 'express'
export default class Server extends Express {
    constructor(options) {
        super(options.expressOptions || {})
        super.use(cookieParser()) // TypeError: (intermediate value).use is not a function
        this.use(bodyParser.json()) // This definition works cause of overridden prototype
        this.use(Express.static('static'))

        this.test() // TypeError: this.test is not a function
        this.test1 = '123' // Contains in Server final prototype
    }
    test() {
        console.log('test')
    }
}

И проблема с определением суперкласса. Я не знаю, как сохранить дочерний прототип. Это будет очень ценно, если вы поможете.

1 Ответ

0 голосов
/ 26 октября 2018

Посмотрев еще раз на это, я вижу проблему.

express не является конструктором.

Вы рассматриваете express, как если бы это былоконструктор, который вы вызываете, используя new Express.Это не так: вы просто называете это, например, const app = express().Фактически, express - это функция ( вот исходный код ), которая создает объект для вас старомодным (не ES6) способом.

Насколько яЯ знаю, что невозможно выделить ни один из основных объектов Express.Я думаю, вы могли бы использовать классы, чтобы обернуть объекты инфраструктуры Express, но мне это не кажется интуитивно понятным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...