在ES6语境下,如何在函数内部拿到函数对象本身?

比如下面代码:


function fn() {

    //有时,我们需要在函数内部访问函数对象本身

    console.log(fn.name);

    console.log(arguments.callee.name);

}

fn();

我们在函数fn中访问fn函数对象本身时,目前有两种方案


是直接用函数名fn


是用arguments.callee


在ES6语境下,arguments.callee不能用,用函数名代码不够优雅,不好维护,有没有什么更好的办法呢?


慕标5832272
浏览 383回答 1
1回答

子衿沉夜

很值得思考的问题,不过没想到办法,不过给你找一个歪果仁极其 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有时间我会再想一想的。参考:How do you find out the caller function in JavaScript when use strict is enabled?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript