2009-02-16 62 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 [];

創建從封閉單身作爲原始(糾正返回定位)是完全可以接受的,並且不需要像在第二個評論中那樣是對象的實例化