[英]Function to get function name inside function?
要獲得函數內部的函數名稱,可以使用以下代碼:
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()
將獲得名稱。 如何才能做到這一點?
您可以將本地參數傳遞給getmyname
函數,並使用callee.name
而不是解析:
function getmyname(args) {
return args.callee.name;
}
function getname() {
alert(getmyname(arguments));
}
getname(); // "getname"
.name
是函數對象擁有的屬性。
function getmyname() {
return arguments.callee.name;
}
function getname() {
alert(getmyname());
}
getname(); // alerts "getmyname"
請注意:
arguments.callee和其他屬性一起在ECMAscript5嚴格模式下已過時,並且在訪問時將引發錯誤。 因此,我們需要返回getmyname.name,這顯然不是很優雅,因為我們可以直接返回該字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.