javascript - Javascript 可以获取文本形式的函数吗?

标签 javascript reflection function tostring

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/

相关文章:

reflection - Golang - 扫描所有类型的结构

c - 二维数组反转

matlab - 删除子串

java - 在检查Java中的某些条件后是否可以加载一些类字段和方法

language-agnostic - 为什么反射(reflection)叫反射而不叫内省(introspection)呢?

Javascript 对标题数组进行排序的方式与根据数据数组的排序方式相同

javascript - 正则表达式匹配最后一个空格字符

c++ - 从程序的角度来看,内存段是如何组织的

javascript - 在事件监听器中使用闭包时如何在 Google Map 上定义自定义大小

javascript - 编写 if 语句的新方法