将函数的脚本内容转换为字符串

时间:2013-09-24 15:35:39

标签: javascript

例如,如果我有这样的事情:

function hello() {console.log("hello")}

我希望能够在java脚本中创建一个返回字符串值的函数:

"console.log("hello");"    

有没有办法用普通的javascript做到这一点?

3 个答案:

答案 0 :(得分:1)

如果您执行hello.toString(),则会输出"function hello() {console.log("hello")}"

答案 1 :(得分:1)

您可以通过调用函数上的toString()方法获取包括函数声明在内的所有代码。然后,您可以解析此字符串以删除不需要的信息。

这样的事情:

function hello() {
    console.log("hello");
}

var f = hello.toString();//get string of whole function
f = f.substring(f.indexOf('{') + 1);//remove declaration and opening bracket
f = f.substring(0, f.length - 1);//remove closing bracket
f = f.trim();//remove extra starting/eding whitespace

console.log(f);

Here is a working example

答案 2 :(得分:0)

如果你直接从创建的函数开始,那么其他人已经提供了正确的答案,但是如果你想创建一个文字字符串。只需正确引用它:

function hello() { return "console.log(\"hello\")"; };

无论如何,这应该在页面上显示console.log("hello")

<html><head></head><body><script>
    function hello() { return "console.log(\"hello\")"; };
    document.write(hello());
</script><body></html>