关于命名空间下的静态类的问题

Posted

技术标签:

【中文标题】关于命名空间下的静态类的问题【英文标题】:Question regarding static class under namespace 【发布时间】:2011-10-05 08:36:48 【问题描述】:

我的 javascript 代码“MyNameSpace”中有一个命名空间。我正在其中创建一个静态 JavaScript 类“MyChildStaticClass”。我正在使用模块化模式。以下是我的代码:

if (typeof MyNameSpace == 'undefined' || !MyNameSpace) 

    var MyNameSpace = ;


    var MyNameSpace = (function(MyNameSpace) 

        MyNameSpace.MyChildStaticClass = (function() 
            var myobject;
            myobject =  
                x:function(str) 
                    alert(str);
                
            ;

            return myobject;
        )();
        return MyNameSpace;
     (MyNameSpace || ));

上面的代码会这样使用:

MyNameSpace.MyChildStaticClass.x('test');

上面的输出将是一个带有消息测试的警告框。我有一个问题,这是创建静态类和调用上述方法的好方法吗?有没有其他方法可以熟练地写出来?

【问题讨论】:

【参考方案1】:

您可以通过以下方式获得相同的功能:

var MyNameSpace = ;
MyNameSpace.MyChildStaticClass = 
    x : function(str) 
        alert(str);
    

【讨论】:

这不是真的。在这里使用你的模式不会关闭内部方法,因此它们可以从任何地方访问。 你说得对。不过,我只想说一下我的模式:它是可读的:)

以上是关于关于命名空间下的静态类的问题的主要内容,如果未能解决你的问题,请参考以下文章

类和对象的命名空间

c#如何获取某一命名空间下的所有的类的信息(方法以及参数)

面向对象进阶:命名空间和组合

类命名空间与对象实例的命名空间

python基础 13 类命名空间于对象实例的命名空间,组合方法

类命名空间与对象实例的命名空间 and 面向对象的组合用法