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

Javascript 当函数名作为字符串传递时调用嵌套函数,javascript,Javascript,我试图通过将函数名作为字符串传入并调用来访问嵌套函数。例如,见邮报 但是它不起作用。错误: window.outer[action] is not a function 如何使其工作,或调用嵌套函数的替代方法 原因是我试图在函数作用域内隐藏iframe调用的一组函数。这样,您就试图访问未定义的“外部”函数(outer.inner)的“内部”属性。唯一的方法是使用eval: function outer(action){ var inner = { func1: function

我试图通过将函数名作为字符串传入并调用来访问嵌套函数。例如,见邮报

但是它不起作用。错误:

window.outer[action] is not a function
如何使其工作,或调用嵌套函数的替代方法


原因是我试图在函数作用域内隐藏iframe调用的一组函数。

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

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

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

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

但请记住,在某些情况下,eval是邪恶的,所以要小心。

eval。呃。galambalazs想出了一个解决办法。如果你使用eval,你不会死相信我:)是的,你不会死,Crockford不会杀你,他会折磨你直到时间结束:P
function outer(action){
    eval(action+"()");

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