В «базовом» конструкторе у вас есть доступ к полному объекту, поэтому вы можете проверить его реальный конструктор и его прототип const childClassPrototype = this.constructor.prototype
. Имея «дочерний» прототип, вы можете получить список его свойств с помощью Object.getOwnPropertyNames(childClassPrototype)
. Из этого списка вы хотите отфильтровать «конструктор» и свойства, которые не являются функциями.
Примечание: этот метод даст вам доступ к прототипу «листа», как только у вас может быть цепочка прототипов нескольких уровней. Таким образом, вам нужно перебирать цепочку прототипов.
Примечание2: для автообнаружения вы можете рассмотреть возможность использования декоратора. Одна из реализаций приведена здесь: https://github.com/andreypopp/autobind-decorator - эта техника дает вам лучший контроль над неожиданным поведением, которое может возникать в результате метапрограммирования
Звучит как большой запах кода – haim770
Какая польза и какой смысл? – RomanPerekhrest
@RomanPrekhrest просто интересно, могу ли я сделать автосвязы;) –