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]

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

时间: 2024-11-08 08:44:15

node.js 在函数内获取当前函数的相关文章

Node.js文件系统、路径的操作函数

目录 1.读取文件readFile函数 2.写文件 3.以追加方式写文件 4.打开文件 5.读文件,读取打开的文件内容到缓冲区中: 6.写文件,将缓冲区内数据写入使用fs.open打开的文件 7.刷新缓存区; 8.创建目录; 9.读取目录; 10.查看文件与目录的信息; 11.查看文件与目录的是否存在 12.修改文件访问时间与修改时间 13.修改文件或目录的操作权限 14.移动/重命名文件或目录 15.删除空目录 16.监视文件 17.取消监视文件 18.文件流 19.创建读取流 20.创建写入

T-SQL编程 —— 用户自定义函数(内嵌表值函数)

内嵌表值函数 接上 <T-SQL编程 -- 用户自定义函数(标量函数)> http://www.cnblogs.com/viusuangio/p/6212072.html 内嵌表值函数可以用于实现参数化视图(查询),例如有一个查询其定义语句如下: 1 use Student 2 GO 3 --查询笔试成绩几个的同学 4 select s.stuno ,s.stuname,s.brithday,e.written,e.lab 5 from StuInfo s left outer join ex

6 JavaScript函数&amp;内置构造&amp;函数提升&amp;函数对象&amp;箭头函数&amp;函数参数&amp;参数的值传递与对象传递

JavaScript函数:使用关键字function定义,也可以使用内置的JavaScript函数构造器定义 匿名函数: 函数表达式可以存储在变量中,并且该变量也可以作为函数使用. 实际上是匿名函数. <body> <p>函数存储在变量后,变量可作为函数使用:</p> <p id="demo"></p> <script> var x = function(a,b){return a+b; }; document.g

WPF异步回调时回调函数如何获取异步函数产生的变量

有这么一个问题,WPF在使用异步回调的时候,回调函数需要用到异步函数里产生的一个变量,例如异步函数里查询数据库得到了一个DataTable,如何传递给回调函数呢? [方案一]使用全局变量 很容易想到的是用全局变量,这也是最简单的办法.但是如果我想循环调用呢,例如回调函数判断异步函数执行完之后的DataTable有没有数据,有数据则继续异步(BeginInvoke),这时候如果使用全局变量可能会出现意外情况,因为是循环调用,回调函数使用的DataTable是不是你想要的那个值就比较难说了. [方案

nginx反向代理node.js获取客户端IP

使用Nginx做node.js程序的反向代理,会有这么一个问题:在程序中获取的客户端IP永远是127.0.0.1 如果想要拿到真实的客户端IP改怎么办呢? 一.首先配置Nginx的反向代理 proxy_set_header server { listen 80; server_name chat.luckybing.top; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; pro

第一节:Node.js简介

1.什么是Node.js? Node.js是一个用于开发各种Web服务器的开发工具,仔Node.js服务器中,运行的高性能V8 JavaScript脚本语言,该语言是一种可以运行仔服务器端的JavaScript脚本语言.它为了提高性能,采用了以下两种机制:非阻塞型I/O和事件环,由于采用了非阻塞型I/O,所以在执行了访问数据库的代码后将立即转而执行其后的代码,把数据库返回结果的处理代码放在回掉函数中执行,从而提高了程序的执行效率,在Node.js中,在一个时刻只能执行一个事件回掉函数,但是在执行

准备:新V8即将到来,Node.js的性能正在改变

V8的Turbofan的性能特点将如何对我们优化的方式产生影响 审阅:来自V8团队的Franziska Hinkelmann和Benedikt Meurer. **更新:Node.js 8.3.0已经发布了V8 6.0和Turbofan. Node.js依靠V8 JavaScript引擎来运行代码,其语言本身也是我们熟悉和喜爱的.V8 JavaScript引擎是Google为Chrome浏览器编写的JavaScript虚拟机.从一开始,V8的一个主要目标是让JavaScript运行地更快,或者至

Node.js知识点整理之----简介

1.Node.js首要目标是提供一种简单的.用于创建高性能服务器及可在该服务器中运行的各种应用程序的开发工具. 2.Node.js修改了客户端到服务器端的连接方法,解决了 服务器所支持的最大同时连接用户量瓶颈的问题.因为它并不为每个客户端创建一个新的线程,而是为每个客户端连接触发一个在Node.js内部进行处理的事件.因此,如果使用Node.js,可以同时处理多达几万个用户的客户端连接. 3.在Node.js服务器中,运行的是高性能的V8 JavaScript脚本语言,该语言是一种被V8 Jav

Node.js 中流操作实践

本文节选自 Node.js CheatSheet | Node.js 语法基础.框架使用与实践技巧,也可以阅读 JavaScript CheatSheet 或者 现代 Web 开发基础与工程实践 了解更多 JavaScript/Node.js 的实际应用. Stream 是 Node.js 中的基础概念,类似于 EventEmitter,专注于 IO 管道中事件驱动的数据处理方式:类比于数组或者映射,Stream 也是数据的集合,只不过其代表了不一定正在内存中的数据..Node.js 的 Str