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(){
...
}
}
f1:function(){
...
alert(arguments.calee.caller);
},
f2:function(){
...
}
}
#3
arguments.callee.caller可以得到函数的调用者函数的引用,
却不可能得到存放调用者函数的变量(属性)的名称
当然用.toString()方法在有些浏览器中可以得到函数的源代码,能从中找到函数的名称(如果函数有名称的话)
却不可能得到存放调用者函数的变量(属性)的名称
当然用.toString()方法在有些浏览器中可以得到函数的源代码,能从中找到函数的名称(如果函数有名称的话)
#4
3楼正解
不过意义不大 而且在 一些 设计模式下 解析出的函数名亦为空。
不过意义不大 而且在 一些 设计模式下 解析出的函数名亦为空。
#5
firebug堆栈设置断点,查看调用堆栈
#1
比如看 f1 谁调用 了
var f1=function(){
f1.caller
},
#2
var A={
f1:function(){
...
alert(arguments.calee.caller);
},
f2:function(){
...
}
}
f1:function(){
...
alert(arguments.calee.caller);
},
f2:function(){
...
}
}
#3
arguments.callee.caller可以得到函数的调用者函数的引用,
却不可能得到存放调用者函数的变量(属性)的名称
当然用.toString()方法在有些浏览器中可以得到函数的源代码,能从中找到函数的名称(如果函数有名称的话)
却不可能得到存放调用者函数的变量(属性)的名称
当然用.toString()方法在有些浏览器中可以得到函数的源代码,能从中找到函数的名称(如果函数有名称的话)
#4
3楼正解
不过意义不大 而且在 一些 设计模式下 解析出的函数名亦为空。
不过意义不大 而且在 一些 设计模式下 解析出的函数名亦为空。
#5
firebug堆栈设置断点,查看调用堆栈