Создание нового объекта ES6 в конструкторе другого объекта завершается неудачно - PullRequest
0 голосов
/ 08 октября 2018

Редактировать : Этот вопрос отличается от Как расширить класс без необходимости использовать super в ES6? - хотя ответы связаны, это очень очевиднодругой вопрос.Это связано с конкретной ошибкой, и два основных участвующих класса Person и CreationEvent фактически не наследуются друг от друга.

У меня есть два класса ES6, Person и CreationEvent (CreationEvent наследуется от Event).Я хочу сделать new CreationEvent, когда я сделаю new Person (так как CreationEvent является частью событий в истории учетной записи человека).

Запуск new CreationEvent() на немсобственный работает отлично.Однако я не могу запустить new Person().

Даже при уменьшенной версии кода все равно происходит сбой:

class Event {
    constructor() {
        this.time = Date.now()
        this.tags = []
    }
}

class CreationEvent extends Event {
    constructor() {
        this.description = "Created"
    }
}

class Person {
    constructor(givenName, familyName, email) {
        var creationEvent = new CreationEvent()
    }
}  

Запуск new Person() возвращает

ReferenceError: Должен вызывать супер-конструктор в производном классе перед доступом к 'this' или возвращением из производного конструктора

Как создать новый объект ES6 в конструкторе другого объекта?

1 Ответ

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

Вам необходимо вызвать super() в классе CreationEvent, потому что он расширяет класс Event.Как это:

class CreationEvent extends Event {
    constructor() {
        super();

        this.description = "Created"
    }
}
...