Javascript 可以将函数作为文本获取吗? 我的想法就像 eval() 的逆函数。
function derp() { a(); b(); c(); }
alert(derp.asString());
结果类似于“a(); b(); c();”
存在吗?
最佳答案
更新为在下面的评论中添加警告 CMS , Tim Down , MooGoo :
与您想要的最接近的方法是调用 .toString()
在函数上获取完整的函数文本,如下所示:
function derp() { a(); b(); c(); }
alert(derp.toString()); //"function derp() { a(); b(); c(); }"
You can give it a try here ,但需要注意一些注意事项:
- 函数上的
.toString()
依赖于实现(Spec here 15.3.4.2 部分)- 根据规范:返回函数的依赖于实现的表示。该表示形式具有FunctionDeclaration 的语法。请特别注意,表示字符串中空格、行终止符和分号的使用和放置取决于实现。
- 注意到 Opera Mobile、早期 Safari 中的差异,两者都没有像上面的示例那样显示源代码。
- Firefox 返回优化后的已编译函数,例如:
(function() { x=5; 1+2+3; }).toString()
==function() { x=5; }).toString()
==function() { x=5; 1+2+3; }).toString() }
关于javascript - Javascript 可以获取文本形式的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3379875/