Javascript 命名空间内公共函数内的静态成员
如何使函数中的静态成员在命名空间中公开Javascript 命名空间内公共函数内的静态成员,javascript,Javascript,如何使函数中的静态成员在命名空间中公开 var myNamespace= new function() { this.myClass= function Page() { this.MyStaticVar = "myValue"; } } $("#block").html(myNamespace.myClass.MyStaticVar); 请在那里尝试…名称空间不应该是函数,并且这两种情况下都不正确 var myNamespace = {
var myNamespace= new function()
{
this.myClass= function Page()
{
this.MyStaticVar = "myValue";
}
}
$("#block").html(myNamespace.myClass.MyStaticVar);
请在那里尝试…名称空间不应该是函数,并且这两种情况下都不正确
var myNamespace = {
myClass: function Page() {
}
};
myNamespace.myClass.MyStaticVar = "myValue";
像这样:
var ns = {
Class: {
myStaticVar: 'myValue'
}
};
这里唯一的主要问题是使用了命名函数而不是匿名函数(functionpage()
)。如果没有名称,您的代码工作正常:
var myNamespace = new function()
{
this.myClass = new function()
{
this.MyStaticVar = "myValue";
};
};
下面是一个JSFIDLE,显示了代码的工作原理:
您很可能正在寻找这样的设置:
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());
这将允许像这样的东西:
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());
以及:
这是一把工作小提琴:为什么myClass
是一个命名函数?:)@杰克:我不知道。问Abc:)