我知道有几个类似的问题已经在SO
(1,2,3),但不幸的是我有限的知识JS
不允许我到场景外推到我的个人用例,因此这个问题。如何动态附加功能的对象
我有下面的代码段,让我动态附加到和呼叫从物体一些功能,这些功能能正常工作(available on 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>
UPDATE:
够滑稽的,我试图复制一个问题,我有我的,其中功能是局部范围,但我最后写一个例子是不:)(我告诉你JS
不是我的事情)。因此,所有window[function_name]
的答案都是正确的,尽管我接受James Allardice
的答案,因为他推断了我试图解决的问题,但没有提出。
如何在不使用eval
的情况下实现相同的功能?
这是最好的解决方案。当你可以传递函数时没有理由传递一个字符串。 – jbabey 2012-07-13 13:20:40
无法用我的示例覆盖所有内容:我无法将函数名称作为参数传递,我从某个HTML属性值中获取函数名称。谢谢,但不适用于我的用例。 – Max 2012-07-13 13:24:26