不使用eval调用函数?

时间:2011-05-17 14:23:28

标签: javascript

我有一个对象作为data附加到DIV。我还有一个字符串,其中包含该对象的函数名称。

function callFunction(divId, funcName, data) {
  o = $(divId).data('myObject');
  // how do I call o.funcName(data) ???

// Somewhere else...
callFunction('#myDivId', "myFunction", someData);

divIdfuncName实际上来自页面上的Java小程序,这就是为什么它们是字符串。

2 个答案:

答案 0 :(得分:4)

假设它是一个全局函数:

window['foo']()

相同
foo()

答案 1 :(得分:1)

取决于您的功能范围。它附在窗户上,你可以这样做;

<script>
    var my_dynamic_function = function(param) {
        alert(param);
    };

    var callFunction = function(divId, funcName, data) {
        ...
        window[funcName]('PARAM!');
    };

    ...

    callFunction('#myDivId', 'my_dynamic_function', data);
</script>