【发布时间】:2019-03-13 02:46:10
【问题描述】:
我正在做一件奇怪的事情,我得到一个函数的名称,并用这个名称调用函数,如下所示:
function myFunc(){
//do somethng
};
var myFuncName = 'myFunc';
window[myFuncName](); // Expected result.
...可行,但现在我已经使用 ES6 const 命名定义了函数,window[myFuncName] 未定义:
const myFunc = () => {
//do somethng
};
var myFuncName = 'myFunc';
window[myFuncName](); // window[myFuncName] is not a function.
有谁知道当你只有名字作为字符串时如何调用 ES6 函数?我正在使用浏览器 Web 扩展,但认为这是一个一般的 JavaScript 问题。谢谢!
【问题讨论】:
-
如果不使用
eval,就无法在本地范围内进行动态标识符解析。我推荐的最好的选择是让你的“自己的范围”只是一个普通的对象文字,并将你的函数作为属性分配在那里。
标签: javascript ecmascript-6 constants