Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取定义为对象一部分的当前函数名?_Javascript_Jquery_Jquery Ui_Jquery Mobile_Jquery Plugins - Fatal编程技术网

Javascript 如何获取定义为对象一部分的当前函数名?

Javascript 如何获取定义为对象一部分的当前函数名?,javascript,jquery,jquery-ui,jquery-mobile,jquery-plugins,Javascript,Jquery,Jquery Ui,Jquery Mobile,Jquery Plugins,如果当前函数名被定义为对象的一部分,是否有方法获取它? 我知道有一种方法可以在独立函数的位置获取函数名 函数定义: function funName(){} var myName = arguments.callee.toString(); myName = myName.substr('function '.length); myName = myName.substr(0, myName.indexOf('(')); myobj.prototype.funcName = fu

如果当前函数名被定义为对象的一部分,是否有方法获取它? 我知道有一种方法可以在独立函数的位置获取函数名

函数定义:

function funName(){}
var myName = arguments.callee.toString();
   myName = myName.substr('function '.length);
   myName = myName.substr(0, myName.indexOf('('));
myobj.prototype.funcName = function(){}
获取函数名:

function funName(){}
var myName = arguments.callee.toString();
   myName = myName.substr('function '.length);
   myName = myName.substr(0, myName.indexOf('('));
myobj.prototype.funcName = function(){}
但是当它定义为:

function funName(){}
var myName = arguments.callee.toString();
   myName = myName.substr('function '.length);
   myName = myName.substr(0, myName.indexOf('('));
myobj.prototype.funcName = function(){}
谢谢

for(var k in myobj.prototype){
    console.log(k)

}

当您使用匿名函数时,我唯一想到的是使用类似于helper函数的东西,它

  • 抛出一个伪错误
  • 抓住它
  • 解析
    stacktrace
  • 返回包含已解析信息的对象
如果它是用于调试的,这可能是符合条件的,但我会限制在生产环境中使用它,因为我不知道是否会抛出错误、解析错误。真是个好主意

哦,作为一个注意事项,您不应该使用
参数.被调用方
,因为这是一种不好的做法,甚至在
ECMAScript 5的
严格模式中是被禁止的
您可以简单地命名函数表达式

注意:应避免使用参数.callee(),只需为每个函数(表达式)指定一个名称即可。
警告:ECMAScript的第5版禁止在严格模式下使用参数.callee()

这就是我第一次尝试时想到的,我只在最新的
IE
Firefox
Chrome
上测试过,所以你可能需要调整代码


还有一个例子:

function(){}
是匿名的,所以它没有名字。这有什么用?如果你能给出你想要实现的目标的更多细节,其他人将能够提出更好的解决方案。但是就像@tracevipin所说的,你在做什么?这是为了
记录器
/调试的目的吗,也许你的目标是一些不同的东西,可以更容易地解决,如果你能提供更多的上下文,那就太好了,你猜对了,我需要它的记录器。看起来像是在严格模式下的唯一选项。