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所说的,你在做什么?这是为了记录器/调试的目的吗,也许你的目标是一些不同的东西,可以更容易地解决,如果你能提供更多的上下文,那就太好了,你猜对了,我需要它的记录器。看起来像是在严格模式下的唯一选项。