|
|
1
1044
非标准的
以下是2008年的旧答案,现代Javascript不再支持该答案:
|
|
|
2
159
someone already made it project code on GitHub . 但并非所有的消息都是好消息:
调用函数名顺便说一下,如果您只需要调用方函数的名称(在大多数浏览器中,但在IE中不需要),您可以使用:
但请注意,此名称将位于
调用函数代码并总结了其余的最佳答案(由Pablo Cabrera、nourdine和Greg Hewgill撰写)。
这将显示 密码 调用方函数的。遗憾的是,这对我来说还不够,这就是为什么我给你提供StackTrace和调用方函数名的提示(尽管它们不是跨浏览器的)。 |
|
|
3
67
我知道你提到“在Javascript中”,但如果目的是调试,我认为只使用浏览器的开发工具更容易。这是它在Chrome中的外观:
|
|
4
63
我通常使用
(我使用它在执行期间收集低级构造函数中的调用堆栈,以便以后查看和调试,因此设置断点没有用,因为它将被命中数千次) |
|
|
5
53
直到打电话的人
注意:它会导致递归函数上的无限循环。 |
|
|
6
51
此代码:
显然,第一位更便于移植,因为您可以更改函数的名称,从“Hello”改为“Ciao”,并且仍然可以使整个功能正常工作。 在后一种情况下,如果您决定重构被调用函数的名称(Hello),则必须更改所有出现的函数:( |
|
|
7
47
如果您不打算在IE中运行它<11那么 console.trace() 这很合适。
|
|
|
8
26
|
|
|
9
25
在ES6和Strict模式下,使用以下命令获取调用者函数
请注意,如果没有调用方或没有上一个堆栈,那么上面的行将抛出一个异常。相应地使用。
|
|
|
10
23
可以使用Function.Caller获取调用函数。使用argument.caller的旧方法被认为已过时。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/caller 注意函数。调用方是非标准的: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/caller |
|
|
11
21
看起来这个问题已经解决了,但我最近发现 callee is not allowed in 'strict mode' 因此,为了我自己的使用,我编写了一个类,它将从调用它的位置获取路径。它是 part of a small helper lib 如果要使用代码独立,请更改用于返回调用方堆栈跟踪的偏移量(使用1而不是2)
|
|
|
12
20
|
|
13
18
|
|
|
14
16
以下函数似乎在Firefox 52和Chrome 61-71中完成了这项工作,尽管它的实现对这两种浏览器的日志记录格式做了很多假设,应该谨慎使用,因为它会抛出一个异常,并可能在执行之前执行两个正则表达式匹配。
|
|
|
15
16
heystewart's answer
和
JiarongWu's answer
大多数浏览器都会使用
结论:使用
|
|
|
16
12
|
|
17
11
尝试访问以下内容:
|
|
|
18
7
我想在这里添加我的小提琴: http://jsfiddle.net/bladnman/EhUm3/
注: 这把小提琴里有相当多我自己的“样板”。如果愿意,您可以删除所有这些内容并使用split。这只是我所依赖的一组非常安全的函数。
|
|
|
19
6
请注意,如果数组中没有[1]元素,因此没有调用方函数,则上述操作将返回错误。要解决此问题,请使用以下命令:
|
|
|
20
5
我只是想让你知道
|
|
21
4
这里,除了这个
|
|
|
22
4
|
|
|
23
4
注意,您不能使用 Function.caller 在Node.js中,使用 caller-id 改为打包。例如:
|
|
|
24
1
|
|
|
25
1
解决此问题的另一种方法是将调用函数的名称作为参数传递。
现在,您可以这样调用函数:
我的示例使用硬编码的函数名检查,但您可以很容易地使用switch语句或其他逻辑来执行您想要的操作。 |
|
26
1
据我所知,我们有两种方法,从给定的来源,如这样-
|
|
|
27
1
为什么上面所有的解决方案看起来都像火箭科学。同时,它不应该比这个片段更复杂。所有的功劳都归功于这个家伙 How do you find out the caller function in JavaScript?
|
|
|
28
1
执行代码:
日志如下所示:
|
|
29
1
赏金要求在 模式,我能看到这一点的唯一方法是引用一个声明的函数 外部 例如,以下为非标准版本,但已在Chrome、Edge和Firefox的早期(2016年3月29日)和当前(2018年8月1日)版本中进行了测试。
|
|
|
30
1
对我来说效果很好,您可以选择在函数中返回多少:
|