node.js 在函數內獲取當前函數


js 如何在函數體內部知道 自己在哪個函數內運行呢?

 

打比方:

function a() {
    // 我想在這里知道我的函數名a和函數function a () {...}
}

 

使用Error的調用棧可以匹配到當期執行的函數:

//    獲取正在執行的函數
function getExecFunction() {
    let names = new Error().stack.match(/at (.*?) /g);
    let name = names[1].replace('at ', '').trim();
    return eval(name);
}

 

Use Ex:

function a() {
    console.log(getExecFunction());
}

function getExecFunction() {
    let names = new Error().stack.match(/at (.*?) /g);
    let name = names[1].replace('at ', '').trim();
    return eval(name);
}

a();        //[Function: a]

 

如果是在class內部,可以這么寫(代碼基於ES6):

class A {
    // 獲取正在執行的函數
    getExecFunction() {
        let names = new Error().stack.match(/at A\.(.*?) /g);
        let name = names[1].replace('at A.', '').trim();
        return eval(`this.${name}`);
    }

    a() {
        console.log(this.getExecFunction());
    }
}
new A().a();    //    [Function: a]

 

如有錯誤,請指正,感謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM