2010-11-25 88 views
5

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

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

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

但它不起作用。错误:

window.outer[action] is not a function 

如何使这项工作或调用嵌套函数的替代方法。

这样做的原因是我试图隐藏一堆由函数作用域内的iframe调用的函数。

回答

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

outer("func1"); 
+1

谢谢。作品款待 – SystemicPlural 2010-11-25 14:30:34

+0

很高兴我可以帮助:) – galambalazs 2010-11-25 21:06:10

1

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

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

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

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

相关问题