比如下面代码:function fn() { //有时,我们需要在函数内部访问函数对象本身 console.log(fn.name); console.log(arguments.callee.name);}fn();我们在函数fn中访问fn函数对象本身时,目前有两种方案是直接用函数名fn是用arguments.callee在ES6语境下,arguments.callee不能用,用函数名代码不够优雅,不好维护,有没有什么更好的办法呢?
1 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
很值得思考的问题,不过没想到办法,不过给你找一个歪果仁极其 hack 的做法吧,也算是欣赏:
'use strict'
function jamie (){
var callerName;
try { throw new Error(); }
catch (e) {
var re = /(\w+)@|at (\w+) \(/g, st = e.stack, m;
re.exec(st), m = re.exec(st);
callerName = m[1] || m[2];
}
console.log(callerName);
};
function jiminyCricket (){
jamie();
}
jiminyCricket(); // jiminyCricket
有时间我会再想一想的。
参考:
添加回答
举报
0/150
提交
取消