需要有一个方法,在那个函数中调用就能得到哪个函数的名称,
就像下面的这个getname()一样【注意:这个getname是我虚拟出来的,我就是需要这个东西,但不知道怎么弄】 
<script>
function myfun1()
{
alert(getname());//要显示这个函数的名字,myfun1
}
myfun1();
</script>

解决方案 »

  1.   

    <script>
    function myfun1()
    {
    alert(arguments.callee);
    }
    myfun1();
    </script>
      

  2.   

    function myfun1() {
            //alert(arguments.callee);
            alert(/function\s+(\w+)/.exec(arguments.callee)[1]);
    }myfun1();
      

  3.   

    有个方法,不过比较浪费时间。
    先用arguments.callee.toString()获取此函数的代码,然后用正则表达式解析它,获取函数名部分。
      

  4.   

    3楼,你的这个当函数名有汉字的时候,就不对了.
    <script>
    function myfun1好人() 
    {
    //alert(arguments.callee.toString());
        alert(/function\s+(\w+)/.exec(arguments.callee)[1]);
    }myfun1好人();
    </script>
      

  5.   

    还有一个问题,当函数的声明如以下方式时,callee似乎也不管用了
    <script>
    var myfun1好人=function()
    {
    alert(arguments.callee.toString());
    }
    myfun1好人();
    </script>
      

  6.   

    o(╯□╰)o 你自己不会简单的修改一下吧,不过用汉字命名函数很少见。
    function       myfun1汉字       () {
            alert(/function\s+([\S]+)\s*\(/.exec(arguments.callee)[1]);
    }myfun1汉字();
      

  7.   

    那必然,如果你将函数赋值给多个变量,你期望他显示哪个?
    var myfun1=myfun2=myfun3=myfun4=myfun5=function() {}关键是你要干嘛?arguments.callee就是函数本身,用这个就可以了比如匿名递归函数,计算阶乘
    alert((function(n) {
        return n <= 1 ? 1 : n * arguments.callee(n - 1);
    })(5))
      

  8.   

    郁闷呀,学了好几次正则表达式了,C#的,JAVA的,Javascript的,总是不得门道,
    s*和w*是什么区别?
      

  9.   

            (function () {
            alert(/function\s+(\w+)/.exec(arguments.callee)[1]);
    })()
            哎呀,匿名的就没有名字了……
      

  10.   

    顺便问一下,正则表达式中有 [abc] 这种[]中的东西是什么意思,哎,真难懂呀.
      

  11.   

    我用老办法做了一个
    <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>