我在变量""
中有一个匿名函数。
GLOBAL
在我的init函数中返回var GLOBAL = function (){
var func1 = function(){
console.log("function 1 go!")
}
var func2 = function(){
console.log("function 2 go!")
}
return {
init: function(){
func1();
}
}
}()
,调用它func1
。
我的问题是:如何直接调用函数,例如GLOBAL.init();
或GLOBAL.func1()
。
答案 0 :(得分:3)
您必须返回函数引用
var GLOBAL = function (){
var func1 = function(){
console.log("function 1 go!");
}
var func2 = function(){
console.log("function 2 go!")
}
return { func1,func2 };
}();
现在您可以像GLOBAL.func1()
和GLOBAL.func2()
一样访问它。并且不要混淆语法{ func1,func2 };
。这与{ func1 : func1,func2 : func2 };
非常相似,我只使用了ES6中引入的速记。
答案 1 :(得分:2)
你做不到。它们是本地范围的变量。在功能之外无法访问是很重要的一部分。
如果您希望它们可以访问,那么您需要明确地创建它们(就像您为分配给init
的匿名函数所做的那样)。
答案 2 :(得分:1)
您应该在返回的对象中显式添加这些函数。在此代码中,您仍然可以继续执行init()作为对象初始化。
var GLOBAL = function (){
var func1 = function(){
console.log("function 1 go!")
};
var func2 = function(){
console.log("function 2 go!")
}
return {
init: function(){
this.func1();
},
func1,
func2
}
}();
GLOBAL.func1();
GLOBAL.func2();

我希望有帮助:D
答案 3 :(得分:0)
如果可以提供帮助,您可以采用模块化方法:
var GLOBAL = {
func1: function(){
console.log("function 1 go!")
},
func2: function(){
console.log("function 2 go!")
}
}
GLOBAL.func1();
GLOBAL.func2();