Статический метод 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()
этого класса.