我有一个来自对象的函数,比如说Object.MyFunc.我需要将此函数名称发送到另一个函数中,如下所示:doSomething("Object.MyFunc");
任何建议?
这是一个老问题,但在 ES6 中,这种能力是通过Function.name属性提供的。在ECMAScript的2015年语言规范定义了这个属性是如何加入到一个功能实例:
9.2.11 SetFunctionName(F,名称,前缀)
抽象操作
SetFunctionName需要一个Function参数F、一个String或Symbol参数name以及可选的String参数前缀。此操作通过执行以下步骤添加name属性F: ...
不幸的是,这尚未在所有主要浏览器中实现:此处列出的所有 IE 版本均不支持它,并且仅在所有其他主要浏览器中部分支持(Edge 13 拥有最好的,尽管目前仍是部分支持)。
如果您尝试MyFunc从内部调用doSomething,则只需传递实际的函数即可:
var someObject = new Object();
someObject.MyFunc = function() { alert('test'); }
function doSomething(func) {
func();
}
doSomething(someObject.MyFunc);
Run Code Online (Sandbox Code Playgroud)