2009-02-16 56 views
1

我是在现有的JS库我前一段时间写了,并试图组织它在一个共同的名字空间......这里是技术我想使用的例子:Javascript Namespacing,语法错误在哪里?

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) 

任何人都可以看到一些明显的问题,这一技术?

回答

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

    function privateMethod() { }; 

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

}(); 

问题真的很棘手,返回和{显然应该在同一行。还有新的[]无效,我也为你解决了这个问题。

+0

JS是“空白不可知论者”,直到它不是。 – FlySwat 2009-02-16 23:47:39

0

只是关于数组赋值的一个快速注释。

这工作: var privateMember = new Array();

而且这个工程,太: var privateMember = [];

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

创建从封闭单身作为原始(纠正返回定位)是完全可以接受的,并且不需要像在第二个评论中那样是对象的实例化