eval除非您 绝对 没有其他选择 , 否则不要使用。
如前所述,使用这种方法将是最好的方法:
window["functionName"](arguments);
但是,这将不适用于名称空间的功能:
window["My.Namespace.functionName"](arguments); // fail
您将按照以下方式进行操作:
window["My"]["Namespace"]["functionName"](arguments); // succeeds
为了使操作更简单并提供一些灵活性,这里提供了一个便捷功能:
function executeFunctionByName(functionName, context ) { var args = Array.prototype.slice.call(arguments, 2); var namespaces = functionName.split("."); var func = namespaces.pop(); for(var i = 0; i < namespaces.length; i++) { context = context[namespaces[i]]; } return context[func].apply(context, args);}您可以这样称呼它:
executeFunctionByName("My.Namespace.functionName", window, arguments);请注意,您可以根据需要传递任何上下文,因此与上述操作相同:
executeFunctionByName("Namespace.functionName", My, arguments);


