Size: a a a

2021 January 17

DM

Denys Mikhalenko in javascript_ru
B::constructor(version) {
 super(version)
}
источник

DM

Denys Mikhalenko in javascript_ru
вот так, условно
источник

DM

Denys Mikhalenko in javascript_ru
Что нельзя?
источник

w

whyamsx in javascript_ru
А как бы ты решил такую задачку?
Может как-то иначе можно
источник

w

whyamsx in javascript_ru
Denys Mikhalenko
Что нельзя?
Аргументом передавать
источник

DM

Denys Mikhalenko in javascript_ru
Почему нельзя?
источник

w

whyamsx in javascript_ru
Это будет неуместно
источник

DM

Denys Mikhalenko in javascript_ru
А какая задачка-то?
источник

w

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

w

whyamsx in javascript_ru
Переслано от whyamsx
class Fater {
 constructor() {
   this.version = '1.0.0'
 }
}

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

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


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

w

whyamsx in javascript_ru
Denys Mikhalenko
А какая задачка-то?
Вот
источник

DM

Denys Mikhalenko in javascript_ru
Сделай версии статическими
источник

DM

Denys Mikhalenko in javascript_ru
static properties инициализируются раньше всего остального
источник

w

whyamsx in javascript_ru
А дальше загонять их в тот Set?
источник

DM

Denys Mikhalenko in javascript_ru
Ну все будет работать как ты хочешь
источник

DM

Denys Mikhalenko in javascript_ru
class A {
 static allVersions = new Set()
 static version = 'a'
 constructor() {
   this.constructor.allVersions.add(this.constructor.version)
 }
}
class B extends A {
 static version = 'b'
}
const b = new B()
источник

DM

Denys Mikhalenko in javascript_ru
источник

R

Rafael in javascript_ru
Denys Mikhalenko
class A {
 static allVersions = new Set()
 static version = 'a'
 constructor() {
   this.constructor.allVersions.add(this.constructor.version)
 }
}
class B extends A {
 static version = 'b'
}
const b = new B()
👍
источник

w

whyamsx in javascript_ru
Балдеж
Спасибо большое Денис
Как всегда просто ❤️❤️❤️
источник

DM

Denys Mikhalenko in javascript_ru
Вот, для общеобразовательных целей:
class A {
 static allVersions = new Set()
 version =  (function() { console.log('initializing version a...'); return 'a' })()
 constructor() {
   console.log('A::constructor()')
   console.log('A::this', this)
   console.log('A::this.version', this.version)
   A.allVersions.add(this.version)
 }
}
class B extends A {
 version = (function() { console.log('initializing version b...'); return 'b' })();
 constructor() {
   console.log('B::constructor()')
   console.log('B::constructor() calling super()')
   super()
   console.log('B::constructor() done calling super()')
   console.log('B::this', this)
   console.log('B::this.version', this.version)
 }
}
const b = new B()
источник