이름으로 함수 실행, 객체를 매개 변수로 전달합니다.
-
16-09-2019 - |
문제
문제는 다음과 같습니다. 이름 별 함수를 알고 있습니다 (그리고 그 함수는 이미 외부 스크립트로로드되었습니다). 그러나 실제 함수 객체가 호출 할 수 없습니다. 일반적으로 나는 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"]);
제휴하지 않습니다 StackOverflow