如何在javascript中计算完整函数字符串(包括参数)

如何在javascript中计算完整函数字符串(包括参数),javascript,introspection,dynamic-function,Javascript,Introspection,Dynamic Function,我有一个选择(下拉列表),其中包含与操作相对应的选项。每个操作对应于一个通用javascript函数,该函数应在select的已更改事件上调用。看起来是这样的: <select id="id-select-action" class="select-action right" value="Actions"> <option class="select-title">Actions</option> <op

我有一个选择(下拉列表),其中包含与操作相对应的选项。每个操作对应于一个通用javascript函数,该函数应在select的已更改事件上调用。看起来是这样的:

<select id="id-select-action" class="select-action right" value="Actions">
            <option class="select-title">Actions</option>
            <optgroup label="General Actions">
                <option value="load_new_page('/url/to/new/page')">create a foo</option>
                <option value="load_cbox('/url/to/cbox/contents')">manage tags</option>
            </optgroup>
</select>
似乎每个人都讨厌eval()。但这是一个适当的情况,还是我应该做些别的?我看着这个。但是在这个例子中,您只需要处理名称,而不是完整的函数调用字符串,包括参数

我这样做的原因是,我正在为应用程序的某些类型的视图创建一个通用框架,每个页面的操作可能不同(并且具有不同的url和/或调用不同的javascript函数)


谢谢

使用此fn从字符串创建fn

 function createFunctionFromString(fnName, noOfParameters) {
        var _params = [];
        for (i = 0; i < noOfParameters; i = i + 1) {
            _params.push("p" + (i + 1));
        }
        var _fn = fnName ? new Function(_params.toString(","), "return " + fnName + "(" + _params.toString(",") + ");") : null;
        _params.length = 0;
        return _fn;
    }

我想eval会有帮助的。。在这种情况下

但请注意使用eval,并检查其条件是否适合您的情况

 function createFunctionFromString(fnName, noOfParameters) {
        var _params = [];
        for (i = 0; i < noOfParameters; i = i + 1) {
            _params.push("p" + (i + 1));
        }
        var _fn = fnName ? new Function(_params.toString(","), "return " + fnName + "(" + _params.toString(",") + ");") : null;
        _params.length = 0;
        return _fn;
    }
var convertedFn=createFunctionFromString($("#id-select-action option:selected").val(),'SomeInteger');


convertedFn();