码迷,mamicode.com
首页 > Web开发 > 详细

node.js 在函数内获取当前函数

时间:2017-12-15 20:52:12      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:let   nbsp   [1]   匹配   gpo   指正   错误   stack   ror   

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]

 

如有错误,请指正,感谢。

node.js 在函数内获取当前函数

标签:let   nbsp   [1]   匹配   gpo   指正   错误   stack   ror   

原文地址:http://www.cnblogs.com/shenshangzz/p/8044650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!