2009-11-04 4 views
1

여기에 문제가 있습니다 - 함수가 이름으로 함수를 알고 있고 (해당 함수가 이미 외부 스크립트에서로드 되었음), 실제 함수 개체를 사용할 수 없습니다. 나에게 전화 해. 일반적으로 나는 eval (function_name + "(arg1, arg2)")을 호출 할 것이지만, 제 경우에는 문자열이 아니라 객체를 전달해야합니다. 간단한 예 :이름으로 함수를 실행하여 매개 변수로 개체를 전달하십시오.

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

이 기능을 어떻게 수행합니까?

감사합니다. Andrey

+1

참조 http://stackoverflow.com/questions/359788/javascript-function-name-as-a-string 및 HTTP : /이 또한 있었던 파라미터로 문자열이나 아무것도 원하는 기능을 작동 않습니다 /stackoverflow.com/questions/496961/how-do-i-call-a-javascript-function-name-using-a-string and http://stackoverflow.com/questions/912596/how-to-turn-a -string-into-a-javascript-function-call 그리고 그 목록은 계속된다. –

+0

나의 나쁜 것, 나는 내가 충분히 묻기 전에 충분히 검색하지 않았다고 생각한다. – Andrey

답변

4

최상위 레벨 window에서 함수 개체를 가져올 수 있어야합니다. 예 : 기능은 자바 스크립트의 첫 번째 클래스 객체이기 때문에 당신이 할 수 있도록

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

이 가능합니다 :

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

이 평가는 절대 사용하지 마십시오, 악 오기 '당신은 간단하게 할 수있는 (하나의 편지 차이를 참조) 다른 변수로 할 수있는 것처럼 액세스합니다.

var result = window[another_function_name]("string1", [1, "an array"]); 
관련 문제