JavaScript에는 주어진 함수의 정의를 문자열로서 수정하고 평가할 수있는 방법이 있습니까?
-
07-07-2019 - |
문제
나는 새로운 맥락에서 함수를 평가하려고 노력하고 있습니다. 즉, 범위에 존재하지 않는 특정 단어가 포함 된 것입니다. 함수를 문자열로 정의하는 경우 쉽지만 일반 기능 목록과 같이이 작업을 수행 할 수있는 기능을 제공하고 싶습니다.
var funcs = {
first: function() { return 'yayaya'; },
second: function() { return 'okokok' + keyword; },
...
};
그런 다음 나중에 :
function Thing () {};
for (func in funcs) {
var definition = funcs[func].definition();
var keyword = "NOW I AM THE KEYWORD";
var actual_func_with_keyword_defined = eval(definition);
Thing.prototype[func] = actual_func_with_keyword_defined;
}
내가 누락 된 것은 정의 () 함수 또는 동등한 것으로 함수의 소스를 반환합니다. JavaScript에서 가능합니까?
해결책
더 길고 우아한 솔루션이 있다고 확신하지만 이것은 효과가 있습니다.
function foo() {
}
var bar = '' + foo; //type cast to a string by adding an empty string
alert(bar);
다른 팁
간단히 꺼내십시오 .definition()
.
JS 표준 방법은 전화하는 것입니다 toString()
기능에. 그렇게 :
function myFun() {}
myFun.toString() // gives "function myFun() {}",
// potentially with white space differences
제휴하지 않습니다 StackOverflow