Javascript功能&嵌套函数

时间:2016-02-03 10:51:13

标签: javascript function scope

目的:我需要在主要功能中调用子功能;

功能声明:

var MainFunction = function () {

   function NestedFunc1(){
       console.warn("NestedFunc1");
   };

   function NestedFunc2(){
       console.warn("NestedFunc2");
   }; 
}

函数调用:

MainFunction.NestedFunc1();

MainFunction.NestedFunc2();

  • 我做错了什么?

10倍;

2 个答案:

答案 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();

另请注意,只要您不希望在该对象中包含其他“私有”函数,此模式就可以了。

相关问题