【问题标题】:Get inside function calls [duplicate]获取内部函数调用[重复]
【发布时间】:2013-06-27 04:36:44
【问题描述】:

我试图从我的问题中给出一个国外的图片。假设我有一个函数,在这个函数内部我有一些其他的函数调用,最后,第一个函数返回一个值。

function a() {
  return 1;
}

function b() {
  var result = a();
  return 2 + result;
}

b();

现在,在调用 b() 方法之后,我想知道 b() 函数内部调用了多少个函数以及调用了哪些函数。我怎样才能实现它?

【问题讨论】:

  • stackoverflow.com/questions/10182387/… 可能会给你一些胶水。
  • 你想知道它是为了调试还是用它来创建程序逻辑?后者将是一个糟糕的设计决策,因为它会违反 concept of encapsulation - 只有函数负责它内部发生的事情
  • @Bergi,这肯定是一个糟糕的设计,但为什么会违反封装的概念?
  • 如果@Afshin 分享他为什么想要这样一个功能会更好,因为似乎没有通用的、开箱即用的优雅方式来实现同样的功能。

标签: javascript node.js


【解决方案1】:

没有正统的方法可以做到这一点。但是,您可以做相反的事情,通过访问 a() 中的 arguments.callee.caller 来找出是谁调用了函数 a()。

但是,如果您真的很想找出在您的函数中调用了哪些函数,您可以随时使用b.toString(),然后手动解析代码:)

【讨论】:

  • 如果b 来自无法访问的范围,b.toString() 并没有太大帮助:-)
  • 我假设我们是在这个例子的外部范围内工作的。
【解决方案2】:

您需要一个 AST 生成器。使用像 this 这样的 JavaScript 解析器。

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 2017-08-07
    • 2020-12-03
    • 2011-02-18
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    相关资源
    最近更新 更多