Executar uma função pelo nome, passando um objeto como um parâmetro
-
16-09-2019 - |
Pergunta
Aqui está o problema - eu sei função pelo nome (e que a função já foi formulário carregado um script externo), mas eu não tenho um sucesso função de objeto real para me chamar. Normalmente eu chamaria eval (function_name + "(arg1, arg2)"), mas no meu caso eu preciso passar um objeto para ele, não uma string. Exemplo simples:
var div = document.getElementById('myDiv')
var func = "function_name" -- this function expects a DOM element passed, not id
Como faço para executar esta função?
Obrigado! Andrey
Solução
Você deve ser capaz de obter o objeto de função do window
de nível superior. Por exemplo.
var name = "function_name";
var func = window[name];
func( blah );
Outras dicas
Nunca use eval, IT'S mal (ver diferença apenas uma carta) Você pode simplesmente fazer:
var div = document.getElementById('myDiv');
var result = window[function_name](div);
Isto é possível porque as funções são objetos de primeira classe em javascript, para que possa acces-los como você poderia com anyother variável. Note que isto irá também trabalho para funções que querem cordas ou qualquer coisa como paramter:
var result = window[another_function_name]("string1", [1, "an array"]);