関数内の静的メンバーを名前空間内でパブリックにする方法
var myNamespace= new function()
{
this.myClass= function Page()
{
this.MyStaticVar = "myValue";
}
}
$("#block").html(myNamespace.myClass.MyStaticVar);
そこで試してみてください...
関数内の静的メンバーを名前空間内でパブリックにする方法
var myNamespace= new function()
{
this.myClass= function Page()
{
this.MyStaticVar = "myValue";
}
}
$("#block").html(myNamespace.myClass.MyStaticVar);
そこで試してみてください...
「名前空間」は関数であってthis
はならず、どちらの場合も正しくありません。
var myNamespace = {
myClass: function Page() {
}
};
myNamespace.myClass.MyStaticVar = "myValue";
このような:
var ns = {
Class: {
myStaticVar: 'myValue'
}
};
ここでの唯一の主な問題は、無名関数 ( 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/