Javascript 命名空间内公共函数内的静态成员

Javascript 命名空间内公共函数内的静态成员,javascript,Javascript,如何使函数中的静态成员在命名空间中公开 var myNamespace= new function() { this.myClass= function Page() { this.MyStaticVar = "myValue"; } } $("#block").html(myNamespace.myClass.MyStaticVar); 请在那里尝试…名称空间不应该是函数,并且这两种情况下都不正确 var myNamespace = {

如何使函数中的静态成员在命名空间中公开

var myNamespace= new function()
{
    this.myClass= function Page()
    {
        this.MyStaticVar = "myValue";
    }
}

$("#block").html(myNamespace.myClass.MyStaticVar); 

请在那里尝试…

名称空间不应该是函数,并且
这两种情况下都不正确

var myNamespace = {
    myClass: function Page() {
    }
};

myNamespace.myClass.MyStaticVar = "myValue";
像这样:

var ns = {
   Class: {
       myStaticVar: 'myValue' 
   }
};

这里唯一的主要问题是使用了命名函数而不是匿名函数(
functionpage()
)。如果没有名称,您的代码工作正常:

var myNamespace = new function()
{
 this.myClass = new function()
 {
  this.MyStaticVar = "myValue";
 };
};
下面是一个JSFIDLE,显示了代码的工作原理:

您很可能正在寻找这样的设置:

var myNamespace = new function()
{
 var Page = function(){
     var MyStaticVar = "myValue";
     var MyDynamicVar = "";

     function SetDynamicVar(val){
      MyDynamicVar = val;  
     };

     function GetDynamicVar(){
      return MyDynamicVar;  
     }

     return{
         MyStaticVar: MyStaticVar,
         SetDynamicVar: SetDynamicVar,
         GetDynamicVar: GetDynamicVar
     };
 };
 this.myClass = new Page();
};
myNamespace.myClass.SetDynamicVar("someValue")
$("#block").html(myNamespace.myClass.GetDynamicVar());
这将允许像这样的东西:

var myNamespace = new function()
{
 var Page = function(){
     var MyStaticVar = "myValue";
     var MyDynamicVar = "";

     function SetDynamicVar(val){
      MyDynamicVar = val;  
     };

     function GetDynamicVar(){
      return MyDynamicVar;  
     }

     return{
         MyStaticVar: MyStaticVar,
         SetDynamicVar: SetDynamicVar,
         GetDynamicVar: GetDynamicVar
     };
 };
 this.myClass = new Page();
};
myNamespace.myClass.SetDynamicVar("someValue")
$("#block").html(myNamespace.myClass.GetDynamicVar());
以及:


这是一把工作小提琴:

为什么
myClass
是一个命名函数?:)@杰克:我不知道。问Abc:)