La ejecución de una función por su nombre, que pasa a un objeto como un parámetro

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

  •  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

¿Fue útil?

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"]);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top