SO
我知道( 1 , 2 , 3 )上已经有一些类似的问题,但不幸的是,我有限的知识JS
不允许我将这些场景外推到我的个人用例中,因此这个问题。
我有以下一段代码,它允许我动态附加到对象并从对象调用一些函数,这些函数工作正常(可在 上找到JsFiddle
):
JavaScript:
$.extend(true, window, {
"MyPlugin": {
"dynamicFunction": dummy_function
}
});
function dummy_function() {
}
function real_function(string) {
alert(string);
}
function dynamic_call(function_name, text) {
MyPlugin["dynamicFunction"] = eval(function_name);
MyPlugin["dynamicFunction"](text);
}
HTML:
<button onClick="dynamic_call('real_function','some text');">click me</button>
更新:
有趣的是,我试图复制我遇到的一个问题,即我的函数在本地范围内,但我最后写了一个不是它的例子:)(我告诉过你JS
不是我的事)。因此,所有window[function_name]
答案都是正确的,尽管我接受了James Allardice
's 因为他推断出我试图解决但没有提出的问题。
如何在不使用的情况下实现相同的功能eval
?