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

Javascript名称空间,语法错误在哪里?,javascript,namespaces,Javascript,Namespaces,我正在使用我不久前编写的一个现有JS库,并尝试将其组织在一个公共名称空间下……下面是我尝试使用的技术的一个示例: var NameSpace = new function () { var privateMember = []; function privateMethod() {}; return { PublicMethod1 : function(arg, arg2) { // e

我正在使用我不久前编写的一个现有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)
有人能看到这种技术的一些明显问题吗

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

    function privateMethod() { };

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

}();
这个问题很棘手,return和{显然应该在同一行。另外new[]无效,我也为您解决了这个问题


这个问题很棘手,return和{显然应该在同一行。另外new[]无效,我也为您解决了这个问题。

只是关于数组分配的一个简短说明

这项工作:
var privatember=new Array();

这也行得通:
var privatember=[];

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


从闭包中创建一个单例是完全可以接受的(纠正返回位置),不需要像第二条注释中那样是对象的实例化,只需简单地说明数组赋值即可

这项工作:
var privatember=new Array();

这也行得通:
var privatember=[];

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


从闭包中创建一个单例是完全可以接受的(纠正返回位置),不需要像第二条评论中那样是对象的实例化JavaScript不需要在行尾加分号,所以在下一行加上括号就是让函数在到达括号之前返回。我已经被同样的问题烧坏了。你不能在新行上写
{
。+使用
var variable={}
优于
var variable=new Object()
。更清晰、更明显的定义JS是“不可知空白”的说法有些荒谬JavaScript不需要在行尾加分号,所以在下一行加上括号就是让函数在到达括号之前返回。我已经被同样的问题烧坏了。你不能在新行上写
{
。+使用
var variable={}
优于
var variable=new Object()
。它的定义更清晰明了