如何将函数名称转换为字符串

Ami*_*mir 6 javascript

我有一个来自对象的函数,比如说Object.MyFunc.我需要将此函数名称发送到另一个函数中,如下所示:doSomething("Object.MyFunc");

任何建议?

RJ *_*son 5

这是一个老问题,但在 ES6 中,这种能力是通过Function.name属性提供的。在ECMAScript的2015年语言规范定义了这个属性是如何加入到一个功能实例

9.2.11 SetFunctionName(F,名称,前缀)

抽象操作SetFunctionName需要一个Function参数F、一个StringSymbol参数name以及可选的String参数前缀。此操作通过执行以下步骤添加name属性F: ...

不幸的是,这尚未在所有主要浏览器中实现:此处列出的所有 IE 版本均不支持它,并且仅在所有其他主要浏览器中部分支持(Edge 13 拥有最好的,尽管目前仍是部分支持)。


Pao*_*ino 3

如果您尝试MyFunc从内部调用doSomething,则只需传递实际的函数即可:

var someObject = new Object();
someObject.MyFunc = function() { alert('test'); }
function doSomething(func) {
    func();
}
doSomething(someObject.MyFunc);
Run Code Online (Sandbox Code Playgroud)