javascript - 从用 var 定义的函数中获取名称

标签 javascript function

我需要从一个函数中获取它的名称(实际上我使用 .caller 在堆栈中向上移动了一点,但这不应该改变问题)。

如果我的函数已命名,“arguments.callee.name”将解决我的问题。但是我的函数是用 var myFunc = function() {} 声明的,并且不可能更改它(我使用的是始终编译为 var 声明的 CoffeeScript)。

那么我怎样才能得到分配函数的变量呢?

这是为了调试目的,所以我不担心性能,无论处理/时间成本如何,我都会使用任何让我得到名字的操作。

编辑:作为记录,这是我根据所选答案的推荐库在 CoffeeScript 中实现的内容:

window.log = (msg) ->
  caller = printStackTrace()[4]
  caller = caller.substring 0, caller.indexOf('(') - 1
  if typeof msg is 'object'
    console.log "v --- at #{ caller }: ---"
    console.log msg
  else console.log "> --- at #{ caller }: " + msg

效果很好,谢谢大家!

最佳答案

您可能对 this javascript stacktrace project on github 感兴趣.特别要注意 stacktrace.js 中的 findFunctionName 方法.

基本上,他们使用 XMLHTTPRequest 重新获取 javascript 源代码并提取函数声明处的行。

关于javascript - 从用 var 定义的函数中获取名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467578/

相关文章:

javascript - 成功发布 jquery ajax 后调用方法

javascript - Node.js 生成与执行

python - 是否有可能使 Python 函数的行为像实例一样?

javascript - 需要输入 URL 模板占位符查找和替换功能

javascript - 为什么我调用 (mobx) extendObservable 没有触发重新渲染?

c++ - 琐碎的 “Not declared in this scope”错误

javascript - 使用 JavaScript、onmouseover 和 onmouseout 更改 Div 内容?

c# - 我怎样才能让一个函数修改一个变量C#

javascript - 将 ng-model 值传递给 ng-click 失败

javascript - JavaScript 中的广告拦截器