gpt4 book ai didi

javascript - 如何在函数内部调用函数?

转载 作者:行者123 更新时间:2023-11-28 11:38:04 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com