需要有一个方法,在那个函数中调用就能得到哪个函数的名称,
就像下面的这个getname()一样【注意:这个getname是我虚拟出来的,我就是需要这个东西,但不知道怎么弄】
<script>
function myfun1()
{
alert(getname());//要显示这个函数的名字,myfun1
}
myfun1();
</script>
就像下面的这个getname()一样【注意:这个getname是我虚拟出来的,我就是需要这个东西,但不知道怎么弄】
<script>
function myfun1()
{
alert(getname());//要显示这个函数的名字,myfun1
}
myfun1();
</script>
function myfun1()
{
alert(arguments.callee);
}
myfun1();
</script>
//alert(arguments.callee);
alert(/function\s+(\w+)/.exec(arguments.callee)[1]);
}myfun1();
先用arguments.callee.toString()获取此函数的代码,然后用正则表达式解析它,获取函数名部分。
<script>
function myfun1好人()
{
//alert(arguments.callee.toString());
alert(/function\s+(\w+)/.exec(arguments.callee)[1]);
}myfun1好人();
</script>
<script>
var myfun1好人=function()
{
alert(arguments.callee.toString());
}
myfun1好人();
</script>
function myfun1汉字 () {
alert(/function\s+([\S]+)\s*\(/.exec(arguments.callee)[1]);
}myfun1汉字();
var myfun1=myfun2=myfun3=myfun4=myfun5=function() {}关键是你要干嘛?arguments.callee就是函数本身,用这个就可以了比如匿名递归函数,计算阶乘
alert((function(n) {
return n <= 1 ? 1 : n * arguments.callee(n - 1);
})(5))
s*和w*是什么区别?
alert(/function\s+(\w+)/.exec(arguments.callee)[1]);
})()
哎呀,匿名的就没有名字了……
<script>
//返回形如function names()定义的函数的名称,在这个函数的内部调用的时候
//调用方法:getfunname(arguments.callee.toString())
function getfunname(funs)
{
var rval="";
funs=funs.replace("{","\r\n{");
var i,firstline;
i=funs.indexOf("\r\n");
if(i>-1)
firstline=funs.substring(0,i);
else
firstline=funs;
rval=firstline.replace("function","");
i=rval.indexOf("(");
if(i>-1)
rval=rval.substring(0,i);
rval=rval.replace(new RegExp(" ","g"),"");
if(rval=="")rval=firstline;
return rval;
}
function myfun1好人()
{
alert(getfunname(arguments.callee.toString()));
}
myfun1好人();
</script>