javascript中查看函数的调用者

时间:2022-10-01 18:59:45
一个被压缩的行数很多的js代码,我想分析某个函数的被调用的过程,有没有方法可以在函数里面alert输出他的调用者的名称,然后在调用者里用同样的方法输出调用者的调用者,一直到顶部。函数是对象里的一个成员,形式如下
var A={
 var f1=function(){
   ...
 },
 var f2=function(){
   ...
 }
}
我知道有一个叫call的成员,但是alert(this.caller)总输出undefine,可是这个函数明显不是在顶部被调用的。

5 个解决方案

#1


 
比如看 f1 谁调用 了

var f1=function(){
     f1.caller 
 },

#2


var A={
 f1:function(){
   ...
   alert(arguments.calee.caller);
 },
 f2:function(){
   ...
 }
}

#3


arguments.callee.caller可以得到函数的调用者函数的引用,
却不可能得到存放调用者函数的变量(属性)的名称
当然用.toString()方法在有些浏览器中可以得到函数的源代码,能从中找到函数的名称(如果函数有名称的话)

#4


3楼正解  
不过意义不大  而且在 一些 设计模式下  解析出的函数名亦为空。

#5


firebug堆栈设置断点,查看调用堆栈

#1


 
比如看 f1 谁调用 了

var f1=function(){
     f1.caller 
 },

#2


var A={
 f1:function(){
   ...
   alert(arguments.calee.caller);
 },
 f2:function(){
   ...
 }
}

#3


arguments.callee.caller可以得到函数的调用者函数的引用,
却不可能得到存放调用者函数的变量(属性)的名称
当然用.toString()方法在有些浏览器中可以得到函数的源代码,能从中找到函数的名称(如果函数有名称的话)

#4


3楼正解  
不过意义不大  而且在 一些 设计模式下  解析出的函数名亦为空。

#5


firebug堆栈设置断点,查看调用堆栈