目的:我需要在主要功能中调用子功能;
功能声明:
var MainFunction = function () {
function NestedFunc1(){
console.warn("NestedFunc1");
};
function NestedFunc2(){
console.warn("NestedFunc2");
};
}
函数调用:
MainFunction.NestedFunc1();
MainFunction.NestedFunc2();
10倍;
答案 0 :(得分:1)
您可以通过属性将其公开
function MainFunction () {
this.nestedFunc1 = function(){
console.warn("NestedFunc1");
};
this.nestedFunc2 = function(){
console.warn("NestedFunc2");
};
}
现在你可以通过
在外面调用这个功能var malObj = new MainFunction();
malObj.nestedFunc1();
但是,如果您仍想像MainFunction.NestedFunc1()
那样调用它,那么将其设为
var MainFunction = {
NestedFunc1:function (){
console.warn("NestedFunc1");
},
NestedFunc2:function (){
console.warn("NestedFunc2");
}
}
答案 1 :(得分:1)
问题是这两个功能都是在功能范围内隔离的。将它们视为私人功能。
其中一个(很多)解决方案可以将MainFunction定义为具有某些函数作为属性的普通对象:
var MainFunction = {
NestedFunction1: function () { .. },
NestedFunction2: function () { .. }
};
请注意,由于我们定义函数的方式,需要使用逗号来分隔函数。然后你只需要打电话
MainFunction.NestedFunction1();
另请注意,只要您不希望在该对象中包含其他“私有”函数,此模式就可以了。