La ejecución de una función por su nombre, que pasa a un objeto como un parámetro
-
16-09-2019 - |
Pregunta
Aquí está el problema - la función por su nombre que conozco (y que la función ya se ha cargado forma un script externo), pero no tienen un espacio disponible objeto función real para que llame. Normalmente yo llamaría eval (function_name + "(arg1, arg2)"), pero en mi caso tengo que pasar un objeto a la misma, no es una cadena. Un simple ejemplo:
var div = document.getElementById('myDiv')
var func = "function_name" -- this function expects a DOM element passed, not id
¿Cómo se realiza esta función?
Gracias! Andrey
Solución
Usted debe ser capaz de conseguir el objeto de la función de la window
de nivel superior. Por ejemplo.
var name = "function_name";
var func = window[name];
func( blah );
Otros consejos
Nunca use eval, Está mal (véase diferencia sólo una letra) Simplemente puede hacer:
var div = document.getElementById('myDiv');
var result = window[function_name](div);
Esto es posible porque las funciones son objetos de primera clase en JavaScript, por lo que pueden acces ellos como lo haría con toda otra variable. Tenga en cuenta que esto también funciona para las funciones que quieren cadenas o nada como parametro:
var result = window[another_function_name]("string1", [1, "an array"]);