簡體   English   中英

在函數內部獲取函數名稱的函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM