Size: a a a

2021 January 17

w

whyamsx in javascript_ru
Вопросик..
Есть у меня класс родитель
Все его дочерние классы могут иметь разные методы
Но одно свойство будет у них общим - это version, которое в себе содержит string значение и у всех этих дочерних классов оно разное
Как я могу вывести в массив version ВСЕХ дочерних классов одного родителя с учетом того, что дочерние классы могут со временем добавляться и массив при новой своей итерации должен показывать всё как оно есть с изменениями
источник

R

Rafael in javascript_ru
whyamsx
Вопросик..
Есть у меня класс родитель
Все его дочерние классы могут иметь разные методы
Но одно свойство будет у них общим - это version, которое в себе содержит string значение и у всех этих дочерних классов оно разное
Как я могу вывести в массив version ВСЕХ дочерних классов одного родителя с учетом того, что дочерние классы могут со временем добавляться и массив при новой своей итерации должен показывать всё как оно есть с изменениями
Сделать статическое поле в родителе, куда добавлять this.version при создании инстанса?
источник

R

Rafael in javascript_ru
Хотя...
источник

w

whyamsx in javascript_ru
А как я в родителя буду пушить все version его наследников
источник

w

whyamsx in javascript_ru
class Father {
 constructor() {
   this.version = '1.0.0'
 }
}

class One extends Father {
 constructor() {
   super()
   this.version = '2.0.0'
 }
}

class Two extends Father {
 constructor() {
   super()
   this.version = '3.0.0'
 }
}


такая вот конструкция получается
и мне нужно узнать версии каждого класса который наследуется от Father, но сколько этих классов в коде и как они называются я могу не знать
источник

R

Rafael in javascript_ru
источник

R

Rafael in javascript_ru
Не понял только, почему undefined
источник

w

whyamsx in javascript_ru
Могу ошибаться но может из-за того что в allVersions добавляется this.version который равняется undefined
источник

w

whyamsx in javascript_ru
ну там выше через строчку version = undefined
это же получается this.version
источник

R

Rafael in javascript_ru
Но я же его переопределил в B
источник

w

whyamsx in javascript_ru
Может супер зарешает
источник

R

Rafael in javascript_ru
Поля инициализируются же перед конструктором
источник

R

Rafael in javascript_ru
whyamsx
Может супер зарешает
По идее без явного конструктора - всегда супер вызывается
источник

w

whyamsx in javascript_ru
Чет реально странно
Разные варианты пробую, вообще не алё
источник

DM

Denys Mikhalenko in javascript_ru
Поля иницилизируются перед конструктором своего класса, но после super()
источник

w

whyamsx in javascript_ru
Я пробовал супер вызвать после переопределения, тоже не помогло
источник

DM

Denys Mikhalenko in javascript_ru
Тут происходит вот что:
A.version = undefined
A constructor() <-- тут вы добавляете в Set undefined, т.к. берется this.version, а там все еще значение из A
B.version = 'version b'
B constructor() продолжается
источник

w

whyamsx in javascript_ru
А как это пофиксить
источник

DM

Denys Mikhalenko in javascript_ru
Передавать в конструктор аргументом
источник

w

whyamsx in javascript_ru
А так нельзя
источник