我得到了一个字符串:

settings.functionName + '(' + t.parentNode.id + ')';

我想翻译成一个函数调用,像这样:

clickedOnItem(IdofParent);

当然,这必须用JavaScript来完成。当我在设置上做警报时。functionName + '(' + t.parentNode.id + ')';似乎每件事都是正确的。我只需要调用它转换成的函数。

传说:

settings.functionName = clickedOnItem

t.parentNode.id = IdofParent

当前回答

我更喜欢使用这样的方法:

window.callbackClass['newFunctionName'] = function(data) { console.log(data) };
...
window.callbackClass['newFunctionName'](data);

其他回答

如果设置。functionName已经是一个函数了,你可以这样做:

settings.functionName(t.parentNode.id);

否则,这也应该工作,如果设置。functionName只是函数名:

if (typeof window[settings.functionName] == "function") {
    window[settings.functionName](t.parentNode.id);
}

我更喜欢使用这样的方法:

window.callbackClass['newFunctionName'] = function(data) { console.log(data) };
...
window.callbackClass['newFunctionName'](data);
window[settings.functionName](t.parentNode.id);

不需要eval()

eval("javascript code");

它在处理JSON时被广泛使用。

下面是一个更通用的方法来做同样的事情,同时支持作用域:

// Get function from string, with or without scopes (by Nicolas Gauthier)
window.getFunctionFromString = function(string)
{
    var scope = window;
    var scopeSplit = string.split('.');
    for (i = 0; i < scopeSplit.length - 1; i++)
    {
        scope = scope[scopeSplit[i]];

        if (scope == undefined) return;
    }

    return scope[scopeSplit[scopeSplit.length - 1]];
}

希望它能帮助一些人。