Javascript преобразование из строки в имя экземпляра - PullRequest
0 голосов
/ 16 июня 2020

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

Было бы лучше, если бы я мог динамически построить имя экземпляра из имени инструмента, а не использовать оператор switch, но я не смог узнать, как это сделать. Например, tool + 'Handler'[mousedown](event) не работает (выдает ошибку TypeError).

1 Ответ

1 голос
/ 16 июня 2020

собрать их в один объект и вызвать по имени ключа

const classesCollection = { PencilHandler, ErazerHandler, BrushHandler }
const requiredClass = classesCollection[tool + 'Handler]
...