要在函数中获取函数名称,我可以使用以下代码:
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()
会得到名字。怎么办呢?
答案 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,这显然不是真的 优雅,因为我们可以直接返回该字符串