1

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

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()会得到这个名字。如何才能做到这一点?

4

2 回答 2

1

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

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

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

getname();  // "getname"
于 2012-12-07T00:51:41.537 回答
0

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

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

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

getname(); // alerts "getmyname"

提醒一句:

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

于 2012-12-07T00:50:55.280 回答