为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕标5832272 2018-12-21 19:14:10
比如下面代码: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

有时间我会再想一想的。

参考:


查看完整回答
反对 回复 2019-01-23
  • 1 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信