Как вызвать функцию по имени через call?

есть функция допустим
UpdateName.call(null);

как заменить UpdateName на переменную

const v = 'UpdateName';
v.call(null);
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Если функция объявлена как function UpdateName() { // ... } то можно так:
this[v].call(null);

Если объявлена как let или const, то хорошего варианта нет.
Можно например, через eval(), но это крайне нежелательно:eval(`${v}.call(null)`); — т.е. составляется текстовая строка JS-кода, которая исполняется.

Почему бы не составить объект с функциями:
const methods = {
  UpdateName: () => { /* ... */ },
  UpdateAddress: () => { /* ... */ },
};
methods[v].call(null);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы