当函数名作为字符串传递时,调用嵌套函数

时间:2010-11-25 14:18:37

标签: javascript

我试图通过将函数名称作为字符串传递然后调用它来访问嵌套函数。例如,请参阅this帖子

function outer(action){
    window["outer"][action]();

    function inner(){
        alert("hello");
    }
}
outer("inner");

然而它不起作用。错误:

window.outer[action] is not a function

如何使这项工作,或调用嵌套函数的另一种方法。

原因是我试图在函数范围内隐藏一堆由iframe调用的函数。

2 个答案:

答案 0 :(得分:6)

function outer(action){
   var inner = {
     func1: function() {},
     func2: function() {},  
     func3: function() {},
     // ...
   }
   inner[action]();
}

outer("func1");

答案 1 :(得分:1)

以这种方式,您尝试访问未定义的“外部”函数(outer.inner)的“inner”属性。唯一的方法是使用eval:

function outer(action){
    eval(action+"()");

    function inner(){
        alert("hello");
    }
}
outer("inner");

但请记住,eval是邪恶的,所以要小心。