函数public里面的静态成员名称空间

时间:2012-12-26 23:01:34

标签: javascript

如何在名称空间

中的函数public中创建静态成员
var myNamespace= new function()
{
    this.myClass= function Page()
    {
        this.MyStaticVar = "myValue";
    }
}

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

http://jsfiddle.net/DSs6r/97/

请在那里试试......

3 个答案:

答案 0 :(得分:3)

“名称空间”不应该是一个函数,this在任何一种情况下都不正确。

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

myNamespace.myClass.MyStaticVar = "myValue";

(Updated jsFiddle)

答案 1 :(得分:0)

像这样:

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

答案 2 :(得分:0)

这里唯一的主要问题是你使用了一个命名函数而不是一个匿名函数(function Page())。没有名称,您的代码就可以正常运行:

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

这是一个显示代码工作的jsfiddle:http://jsfiddle.net/DSs6r/101/

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

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

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

这是工作小提琴:http://jsfiddle.net/DSs6r/102/