Статический метод ES6, относящийся к самости? [дубликат]


На этот вопрос уже есть ответ здесь:

У меня есть два класса: репозиторий и UserRepository. Я хочу определить статический метод в репозитории, который во время выполнения вызывает статическую функцию в UserRepository. Есть ли какой-нибудь чистый способ сделать это?

class Repository {
    static printModel() {
        return console.log(this.constructor.model())
    }
}

class UserRepository extends Repository {
    static model() {
        return "I am a user";
    }
}

UserRepository.printModel(); // Doesn't work; want it to print "I am a user"

Теперь имеет смысл, что вышеизложенное не работает, так как это, вероятно, относится к экземпляру, и у меня нет экземпляров в этом случае.

Мой вопрос заключается в том, как я могу ссылаться на метод подкласса model() из базового класса?

1 3

1 ответ:

Теперь понятно, что вышеизложенное не работает, так как это, вероятно, относится к экземпляру, а у меня в этом случае нет экземпляров.

Нет, как this будет относиться к экземпляру, если вы говорите, что у вас его нет?

Нет, статические методы - это просто функции, как и любые другие методы, и this ссылается на то, что они были вызваны. В UserRepository.printModel();, this будет ссылаться на UserRepository. И вы можете просто использовать this.model() для вызова статического метода .model() этого класса.