문제

문제는 다음과 같습니다. 이름 별 함수를 알고 있습니다 (그리고 그 함수는 이미 외부 스크립트로로드되었습니다). 그러나 실제 함수 객체가 호출 할 수 없습니다. 일반적으로 나는 eval (function_name + "(arg1, arg2)") 호출하지만 내 경우에는 문자열이 아니라 객체를 전달해야합니다. Simple example:

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