Dier_Sergio_Great
@Dier_Sergio_Great
Увлеченный человек

Как вызывать функцию JS имя которой ввиде строки при помощи CALL() или APPLY()?

Собственно в вопросе вся суть.
let arg1 = {x:123,y:321};
let func1 = function(){console.log('Функция вызвана!!!');};
let userfunc = 'func1';
eval(userfunc+'(arg1)'); //Это вызывается легко.
//что то вроде этого
userfunc.call(arg1); 
//ведь userfunc это всего лишь строка, а не функция.

но как вызвать функцию с привязкой контекста, например через CALL, APPLY?
  • Вопрос задан
  • 331 просмотр
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
let func = eval(userfunc);
func.call(arg);

а лучше:
let func = new Function('return ' + userfunc)();
func.call(arg);

а ещё лучше никогда так не делать.
Нет ни одной прикладной задачи, где это могло бы потребоваться.
Если нужно вызывать функции по имени - просто кладите их в объект:
let funcs = {
  func1(){console.log('Функция вызвана!!!');};
};
funcs[userfunc].call(arg);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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