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]
如有错误,请指正,感谢。