如何使函数内的静态成员在命名空间内公开
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/