Javascript命名空间,语法错误在哪里?

时间:2009-02-16 23:33:43

标签: javascript namespaces

我正在使用我前一段时间写过的现有JS库,并试图在一个公共名称空间下组织它...以下是我尝试使用的技术示例:

var NameSpace = new function ()
{
    var privateMember = [];

    function privateMethod() {};


    return 
    {       
        PublicMethod1 : function(arg, arg2)
        {
            // etc
        },
        PublicMethod2 : function ()
        {
            // etc
        },
        PublicMethod3 : function(arg, arg2)
        {
            // etc
        }
    };  

}();

据我所知,这应该可以正常工作,但是我在这一行得到了一个语法错误:

PublicMethod1 : function(arg, arg2)

有人能看到这种技术有一些明显的问题吗?

2 个答案:

答案 0 :(得分:9)

var NameSpace= function ()
{
    var privateMember = new Array();

    function privateMethod() { };

    return {           
        PublicMethod1 : function(arg, arg2)
        {
                // etc
        },
        PublicMethod2 : function ()
        {
                // etc
        },
        PublicMethod3 : function(arg, arg2)
        {
                // etc
        }
    };  

}();

问题真的很棘手,回归并{显然应该在同一条线上。另外new []无效,我也为你解决了这个问题。

答案 1 :(得分:0)

只是关于数组赋值的快速说明。

这有效: var privateMember = new Array();

这也有效: var privateMember = [];

当然,这不是: var privateMember = new [];

从闭包中创建一个单例,就像在原始中一样(校正返回定位)是完全可以接受的,并且不需要像第二个注释那样是对象的实例化