js 是一门灵活性比较大的语言。不存在其他语言常见的namespace、module、private、static 等关键字。
但是,为了防止全局 变量的冲突,可以模拟实现 命名空间。
简单实现是:定义一个
var mySpace = {}
然后,新添加的字段都以属性的形式设置在他上面。
但是,当空间已经存在这个变量的时候,需要检测一下是否存在。
if(typeof mySpace != 'undefined'){
var mySpace = {}
}
或者
var mySpace = mySpace || {};
当,写的命名空间很多时,大量的冗余检测就会出现。此时,可以用工具方法实现。
var myApp = myApp||{};
myApp.namespace = function(ns_str){
var parts = ns_str.split('.'),parent=myApp,i;
if(parts[0] ==myApp){
parts = parts.slice(1);
}
for(i=0,len=parts.length;i<len;i++){
if(typeof parent[parts[i]]== 'undefined') {
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
}