2010-07-31 52 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()); 
相關問題