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