sanek_os9
@sanek_os9
Работаю с Laravel, Vue, Vuetify, AWS Amazon, Linux

Как при наследовании использовать конструктор?

class Parent{
        getName(){
            return 'Sanek';
        }
    }
    class Test extends Parent{

        hello(){
            return this.getName();
        }
    }
    var test = new Test('Hi');
    console.log(test.hello());

Код приведенный выше работает, в консоль выводит Sanek, но если в дочернем классе прописать конструктор
class Parent{
        getName(){
            return 'Sanek';
        }
    }
    class Test extends Parent{
        constructor(hi){
            this.hi = hi;
        }
        hello(){
            return this.getName();
        }
    }
    var test = new Test('Hi');
    console.log(test.hello());

Ошибка: Uncaught ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor
При этом если использовать конструктор но без наследования, работает
class Test{
        constructor(hi){
            this.hi = hi;
        }
        hello(){
            return this.hi;
        }
    }
    var test = new Test('Hi');
    console.log(test.hello());

Почему так происходит?
  • Вопрос задан
  • 3374 просмотра
Решения вопроса 2
@LiguidCool
Он же Вам пишет "используй super".
Ответ написан
@Coder321
В дочернем конструкторе нужно вызвать функцию super()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы