我试图通过将函数名称作为字符串传递然后调用它来访问嵌套函数。例如,请参阅this帖子
function outer(action){
window["outer"][action]();
function inner(){
alert("hello");
}
}
outer("inner");
然而它不起作用。错误:
window.outer[action] is not a function
如何使这项工作,或调用嵌套函数的另一种方法。
原因是我试图在函数范围内隐藏一堆由iframe调用的函数。
答案 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是邪恶的,所以要小心。