获取函数名
如果当前函数是有名函数,则返回其名字,如果是匿名函数则返回被赋值的函数变量名,如果是闭包中匿名函数则返回“anonymous”。
var getFnName = function(callee){
var _callee = callee.toString().replace(/[\s\?]*/g,""),
comb = _callee.length >= 50 ? 50 :_callee.length;
_callee = _callee.substring(0,comb);
var name = _callee.match(/^function([^\(]+?)\(/);
if(name && name[1]){
return name[1];
}
var caller = callee.caller,
_caller = caller.toString().replace(/[\s\?]*/g,"");
var last = _caller.indexOf(_callee),
str = _caller.substring(last-30,last);
name = str.match(/var([^\=]+?)\=/);
if(name && name[1]){
return name[1];
}
return "anonymous"
};
使用:在要调查的函数内部执行此函数,传入一个参数,为arguments.callee。
function ee(){
//+++++++++++++++++++++++++++++++++
var fnname =getFnName(arguments.callee)
//+++++++++++++++++++++++++++++++++
alert(fnname)
};
ee();
机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
浙公网安备 33010602011771号