JavaScript에는 주어진 함수의 정의를 문자열로서 수정하고 평가할 수있는 방법이 있습니까?

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

  •  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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top