在函数内获取函数名的函数?

时间:2012-12-07 00:47:25

标签: javascript

要在函数中获取函数名称,我可以使用以下代码:

function getmyname() {
    var myName = arguments.callee.toString();
    myName = myName.substr('function '.length);
    myName = myName.substr(0, myName.indexOf('('));
    alert(myName); // getmyname
}

但是我需要运行很多次,所以我宁愿使用一个函数来执行它,所以它看起来像:

function getmyname() {
    alert(getfname()); // getmyname
}

所以getfname()会得到名字。怎么办呢?

2 个答案:

答案 0 :(得分:1)

您可以将本地参数传递给getmyname函数并使用callee.name而不是解析:

function getmyname(args) {
    return args.callee.name;
}

function getname() {
    alert(getmyname(arguments));
}

getname();  // "getname"

答案 1 :(得分:0)

.name函数对象拥有的属性。

function getmyname() {
    return arguments.callee.name;
}

function getname() {
    alert(getmyname());
}

getname(); // alerts "getmyname"

提醒:

  与其他属性一起的arguments.callee已经过时了   ECMAscript5严格模式,访问时会抛出错误。所以我们   需要返回getmyname.name,这显然不是真的   优雅,因为我们可以直接返回该字符串