Правильно ли я понимаю что в js нельзя динамически подставить в имя конструктора(имя класса) значение из переменной.
Пример здесь
https://jsfiddle.net/0m324ak6/31/
Room по сути выполняет роль фабрики. И создает объекты. Если добавляется новый объект который она умеет создавать, приходиться опять залезать в код Room. Это печально(