Выполнение функции по имени, передача объекта в качестве параметра

StackOverflow https://stackoverflow.com/questions/1676583

  •  16-09-2019
  •  | 
  •  

Вопрос

Вот проблема - я знаю функцию по имени (и эта функция уже была загружена из внешнего скрипта), но у меня нет реального объекта функции, доступного для вызова.Обычно я бы вызвал eval(имя_функции + "(arg1, arg2)"), но в моем случае мне нужно передать ему объект, а не строку.Простой пример:

var div = document.getElementById('myDiv')
var func = "function_name" -- this function expects a DOM element passed, not id

Как мне выполнить эту функцию?

Спасибо!Андрей

Это было полезно?

Решение

Вы должны иметь возможность получить объект функции с верхнего уровня. window.Например.

var name = "function_name";
var func = window[name];
func( blah );

Другие советы

Никогда не используйте eval, это зло (см. разницу только в одной букве) Вы можете просто сделать:

var div = document.getElementById('myDiv');
var result = window[function_name](div);

Это возможно, потому что функции являются объектами первого класса в javascript, поэтому вы можете обращаться к ним так же, как и с любой другой переменной.Обратите внимание, что это также будет работать для функций, которым нужны строки или что-либо еще в качестве параметра:

var result = window[another_function_name]("string1", [1, "an array"]);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top