Статический метод 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 ответ:
Теперь понятно, что вышеизложенное не работает, так как это, вероятно, относится к экземпляру, а у меня в этом случае нет экземпляров.Нет, как
thisбудет относиться к экземпляру, если вы говорите, что у вас его нет?Нет, статические методы - это просто функции, как и любые другие методы, и
thisссылается на то, что они были вызваны. ВUserRepository.printModel();,thisбудет ссылаться наUserRepository. И вы можете просто использоватьthis.model()для вызова статического метода.model()этого класса.