zoukankan      html  css  js  c++  java
  • 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]

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

    飞鸟尽,良弓藏
  • 相关阅读:
    偶遇问题
    上机实践
    知识点摸清
    实用脚本
    实用脚本
    对于问题,要打破砂锅问到底,也要懂得不求甚解——不执着于问题本身
    偶遇问题
    知识点摸清
    偶遇问题
    程序员论坛
  • 原文地址:https://www.cnblogs.com/shenshangzz/p/8044650.html
Copyright © 2011-2022 走看看