2010-07-31 51 views
20

Javascript可以获取文本的功能吗? 我在想eval()的逆。结果将会像“a(); b(); c();”这样的结果,如果这样,Javascript可以获得文本的功能吗?

它存在吗?

+0

这是可能的JavaScript函数转换为文本,这是也可以[将文本转换回函数](http://stackoverflow.com/questions/2573548/given-a-string-describing-a-javascript-function-convert-it-to-a-java脚本FUNC)。 – 2013-04-26 22:06:40

回答

32

更新包括在下面的评论警告从CMSTim DownMooGoo

提供给你什么最接近的事之后呼吁.toString()上的功能,以获得全功能的文字,像这样:

function derp() { a(); b(); c(); } 
alert(derp.toString()); //"function derp() { a(); b(); c(); }" 

You can give it a try here,一些注意事项需要注意的,但:

  • 上功能.toString()实现相关Spec here15.3.4.2
    • 从规格:返回功能的实现相关的表示。该表示具有函数声明的语法。特别要注意的是,在表示字符串中使用和放置空格,行结束符和分号是依赖于实现的。
    • Opera Mobile,早期Safari中的注意区别,既不显示上例中的源代码。
  • 火狐返回编译功能,优化之后,例如:
    • (function() { x=5; 1+2+3; }).toString() == function() { x=5; }
+0

@delnan - 各种对象都会覆盖'object.toString()'方法,在函数的情况下,你会得到完整的函数文本:) – 2010-07-31 21:41:19

+0

我知道js非常具有动态性,反射性,具有一流的功能等。是......好吧,我不知道这是真棒还是不必要的金光闪闪。我想,两者都是混合的。 – delnan 2010-07-31 21:43:28

+0

哇,代码变得非常格式化了...! – Brandon 2010-07-31 21:49:58

3
function derp() { a(); b(); c(); } 

alert(derp.toString()); 
相关问题