如何在名称空间
中的函数public中创建静态成员var myNamespace= new function()
{
this.myClass= function Page()
{
this.MyStaticVar = "myValue";
}
}
$("#block").html(myNamespace.myClass.MyStaticVar);
请在那里试试......
答案 0 :(得分:3)
“名称空间”不应该是一个函数,this
在任何一种情况下都不正确。
var myNamespace = {
myClass: function Page() {
}
};
myNamespace.myClass.MyStaticVar = "myValue";
答案 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/