现在我知道一个function的名称,是在一个string变量里面的,请问如果只知道这个string,可否调用这个function示例代码如下
var functionName="abc";function abc(){
 alert("abc");
}function def(){
 alert("def");
}不用if,else来判断function名string再来分别调用。
有没有类似java反射机制,直接知道class名就能生成class.
这里也是这个概念,直接知道function名,就调用这个function

解决方案 »

  1.   

    eval('(' + functionName + ')');
      

  2.   

    修改下
    第一种:eval('(' + functionName + '())');
      

  3.   


    谢谢,这个确实可用,如果这个function是带参数,参数也是个变量,那这个应该怎么传,我试了一下
    eval('(' + functionName + '('+参数A+'))');
    这样不行,应该要怎么传呢?
      

  4.   

    另外,参数A是个object的话应该怎么传
      

  5.   

            var functionName = "abc";        var i = { a: 5 };
            function abc(a) {
                alert(a.a);
            }        function def(a) {
                alert(a.a);
            }
            eval('(' + functionName + ')')(i);