我经常遇到的网站将所有JavaScript放在一个namespace结构中:
namespaces = { com : { example: { example.com's data} }
Run Code Online (Sandbox Code Playgroud)
但是,相对于其他命名空间框架安全地设置它似乎需要相对大量的代码(定义为> 2行).我想知道是否有人知道这样做的简洁方法?此外,是否有相对标准/一致的结构方式?例如,com命名空间是直接附加到全局对象,还是通过命名空间对象附加?
[编辑:哎呀,显然{com = { ... } }不会做任何接近我的意图,感谢Shog9指出这一点.]
在我正在研究的项目中,我正在构建我的代码,如下所示
MyLib = {
AField:0,
ASubNamespace:{
AnotherField:"value",
AClass:function(param) {
this.classField = param;
this.classFunction = function(){
// stuff
}
}
},
AnotherClass:function(param) {
this.classField = param;
this.classFunction = function(){
// stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
等等做这样的事情:
var anInstance = new MyLib.ASubNamespace.AClass("A parameter.");
Run Code Online (Sandbox Code Playgroud)
这是实现命名空间的正确方法吗?是否有性能命中,如果有,有多激烈?当我嵌套更深时,性能降级是否堆叠?使用此结构时是否还有其他问题需要注意?
我关心每一点性能,因为它是一个实时图形库,所以我非常重视任何开销.