定义js命名空间

 var $package=function(ns){
var defineNamespace=function(root,ns){
ns=ns || "";
ns=ns.replace(/s/g,"");

if (ns.length == 0) {
return root;
}else {
var nsc = ns.substr(0, 1);
if (nsc != nsc.toLowerCase()) {
throw new Error("命名空间首字母必须小写哦~");
}

if (ns.indexOf(".") == -1) {
typeof(root[ns]) != "object" && (root[ns] = {});
return root[ns];
}
else {
var _ns = ns.split(".")[0];
typeof(root[_ns]) != "object" && (root[_ns] = {});
return defineNamespace(root[_ns], ns.replace(/[^.]*./, ""));
}
}
};

defineNamespace(window,ns);
};

$package("com.dd.bb")
com.dd.bb.cc = "12321";
$package("com.dd.qq")
com.dd.qq.nn = "111";
alert(com.dd.bb.cc);
alert(com.dd.qq.nn);
原文地址:https://www.cnblogs.com/gruguy/p/5825133.html