2

関数内の静的メンバーを名前空間内でパブリックにする方法

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

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

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

そこで試してみてください...

4

3 に答える 3

3

「名前空間」は関数であってthisはならず、どちらの場合も正しくありません。

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

myNamespace.myClass.MyStaticVar = "myValue";

(jsFiddle を更新)

于 2012-12-26T23:04:05.410 に答える
0

このような:

var ns = {
   Class: {
       myStaticVar: 'myValue' 
   }
};
于 2012-12-26T23:08:20.000 に答える
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/

于 2012-12-26T23:35:30.507 に答える