вызовите родительский метод из дочернего конструктора - PullRequest
1 голос
/ 18 марта 2020
class Parent{
    constructor(){
        ...
    }

    methodA(){
        ...
    }
}

class Child extends Parent{
    constructor(){
        super()
        ...
        super.methodA() // <=== ok ???
        this.methodA()  // <=== ok ???
    }
}

Предложить обходной путь, если не законный?

Я думаю, что вопрос очевиден, но этот сайт хочет больше текста, поэтому вот он.

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Да, согласно вашему заданному коду оба работают. Но super.methodA() и this.methodA() различны. Если вы переопределите methodA из дочернего класса, вы увидите разницу.

class Child extends Parent{
    constructor(){
        super()
        ...
        super.methodA() // this calls the Parent class's methodA
        this.methodA()  // this will call the Child class's methodA
    }

    methodA() {

    }
}

Вот демонстрация из JS bin https://jsbin.com/zisamideyu/edit?js, консоли

0 голосов
/ 18 марта 2020
if child has methodA
    use super.methodA()
else
    use this.methodA()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...