var abc = {
'a': 10,
'b': 10,
c: function() {
//like if I have many many functions in c
init_a();
multiple();
function init_a() {
abc.a = 30;
}
function multiple() {
alert(abc.a * abc.b);
}
function minus() {
alert(abc.a - abc.b);
}
return {
function myalert() {
var result = abc.a + abc.b;
alert(result);
}
}
},
d: function() {
abc.c.myalert(); // ??? error??
abc.c().myalert(); // ??? error?? **it run all functions in c but not just myalert, strange things happening...
}
}
abc.d();
在函数 d 中调用“myalert()”函数的正确语法是什么?
最佳答案
myalert()
函数 is 是 abc.c()
的本地函数,因此这是不可能的。
你可以让c()
返回myalert()
:
c: function() {
return function myalert() {
// whatever
}
}, d: function() {
this.c()()
}
请注意,返回的函数不必命名,即 return function() { .. }
。
更新
如果你想像this.c().myalert()
那样调用它,那么c()
需要返回一个对象而不是直接返回函数:
c: function() {
return {
myalert: function() { ... }
}
}
更新2
除了 myalert()
声明之外,您的 c()
函数现在还包含其他语句。调用时,init_a()
和 multiple()
在返回之前被调用。
我建议重构您的代码,例如将 myalert()
移动到主对象中:
var abc = {
a: 10,
b: 10,
c: function() { ... }
myalert: function() { ... }
d: function() {
this.myalert();
}
}
关于javascript - 如何在函数内部调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13682663/