比如 有一个function
function aaa(sender, eventArgs){
////function主体的代码alert(function.name);
]就是想把那个"aaa"这个字符串取出来,不知道该怎么做,谢谢

解决方案 »

  1.   

    aaa只不过是个变量, 他里面保存的是这个函数.. 似乎没有方法可以取得变量的名字吧
      

  2.   


    function getFName(fn){
    return (/^[\s\(]*function(?:\s+([\w$_][\w\d$_]*))?\(/).exec(fn.toString())[1] || '';
    }
    function test(){
    alert(getFName(arguments.callee));
    }
    test();
      

  3.   

    不过LZ要注意有些function为匿名(无名:function(){})
      

  4.   

    写了三种方式的:
    <script type="text/javascript">var x = function(){
          var t = arguments.callee,p = t.caller||window;
          var sp = p.toString().replace(/\s/g,''),st = t.toString().replace(/\s/g,'');
          var rx = /function([^\(]+?)\(\)/ig;
          if(rx.test(st)){alert(RegExp.$1);return;};
          RegExp.lastIndex = 0;
          var ary = sp.split(st);
          if(ary.length>1){
              var ry = /var([^\=]+?)\=$/ig;
              if(ry.test(ary[0])){alert(RegExp.$1);}
          }
          for(var o in p){if(p[o]==t){alert(o);return;}}
    };
    x();function y(){
          var t = arguments.callee,p = t.caller||window;
          var sp = p.toString().replace(/\s/g,''),st = t.toString().replace(/\s/g,'');
          var rx = /function([^\(]+?)\(\)/ig;
          if(rx.test(st)){alert(RegExp.$1);return;};
          RegExp.lastIndex = 0;
          var ary = sp.split(st);
          if(ary.length>1){
              var ry = /var([^\=]+?)\=$/ig;
              if(ry.test(ary[0])){alert(RegExp.$1);}
          }
          for(var o in p){if(p[o]==t){alert(o);return;}}
    };
    y();var z = function(){
        var zn = function(){
          var t = arguments.callee,p = t.caller||window;
          var sp = p.toString().replace(/\s/g,''),st = t.toString().replace(/\s/g,'');
          var rx = /function([^\(]+?)\(\)/ig;
          if(rx.test(st)){alert(RegExp.$1);return;};
          RegExp.lastIndex = 0;
          var ary = sp.split(st);
          if(ary.length>1){
              var ry = /var([^\=]+?)\=$/ig;
              if(ry.test(ary[0])){alert(RegExp.$1);}
          }
          for(var o in p){if(p[o]==t){alert(o);return;}}
        };
        zn();
    };
    z();
    </script>
      

  5.   

    学习了var x = function(){
          var t = arguments.callee,p = t.caller||window;
          var sp = p.toString().replace(/\s/g,''),st = t.toString().replace(/\s/g,'');
          var rx = /function([^\(]+?)\(\)/ig;
          if(rx.test(st)){alert(RegExp.$1);return;};
          RegExp.lastIndex = 0;
          var ary = sp.split(st);
          if(ary.length>1){
              var ry = /var([^\=]+?)\=$/ig;
              if(ry.test(ary[0])){alert(RegExp.$1);}
          }
          for(var o in p){if(p[o]==t){alert(o);return;}}
    };
    x();function y(){
          var t = arguments.callee,p = t.caller||window;
          var sp = p.toString().replace(/\s/g,''),st = t.toString().replace(/\s/g,'');
          var rx = /function([^\(]+?)\(\)/ig;
          if(rx.test(st)){alert(RegExp.$1);return;};
          RegExp.lastIndex = 0;
          var ary = sp.split(st);
          if(ary.length>1){
              var ry = /var([^\=]+?)\=$/ig;
              if(ry.test(ary[0])){alert(RegExp.$1);}
          }
          for(var o in p){if(p[o]==t){alert(o);return;}}
    };
    y();var z = function(){
        var zn = function(){
          var t = arguments.callee,p = t.caller||window;
          var sp = p.toString().replace(/\s/g,''),st = t.toString().replace(/\s/g,'');
          var rx = /function([^\(]+?)\(\)/ig;
          if(rx.test(st)){alert(RegExp.$1);return;};
          RegExp.lastIndex = 0;
          var ary = sp.split(st);
          if(ary.length>1){
              var ry = /var([^\=]+?)\=$/ig;
              if(ry.test(ary[0])){alert(RegExp.$1);}
          }
          for(var o in p){if(p[o]==t){alert(o);return;}}
        };
        zn();
    };
    z();