У меня есть строка, представляющая имя инструмента в приложении для рисования экрана (примеры: «карандаш», «маркер», «линия», «прямоугольник»). Для каждого инструмента я определил класс для выполнения функций этого инструмента (например, PencilHandler
) и создал его экземпляр (например, pencilHandler = new PencilHandler()
). В настоящее время я использую длинный оператор переключения на go от имени инструмента (строки) до соответствующего экземпляра (объекта) (например, switch(tool) { case 'pencil': return pencilHandler; ...}
), а затем вызываю метод возвращенного экземпляра (например, pencilHandler.mousedown(event)
).
Было бы лучше, если бы я мог динамически построить имя экземпляра из имени инструмента, а не использовать оператор switch, но я не смог узнать, как это сделать. Например, tool + 'Handler'[mousedown](event)
не работает (выдает ошибку TypeError).