我正在使用我前一段时间写过的现有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)
有人能看到这种技术有一些明显的问题吗?
答案 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 [];
从闭包中创建一个单例,就像在原始中一样(校正返回定位)是完全可以接受的,并且不需要像第二个注释那样是对象的实例化