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

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

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

const v = 'UpdateName';
v.call(null);
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 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);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $