一、命名空间的实现:
(function(win){
var Benjamin = win.Benjamin = {};
Benjamin.namespace = function(str){
if(!str || !str.length) return null;
var
parent = Benjamin,
arr = str.indexOf(".") > 0 ? str.split(".") : [],
ilen = arr.length,
i = (ilen > 0 && arr[0] == "Benjamin") ? 1 : 0;
for( ; i < ilen; i += 1){
parent = parent[arr[i]] = parent[arr[i]] || {};;
}
//返回申请命名空间的一个引用 ??
return parent;
}
})(window);
二、命名空间的优缺
优点:最大的优点是减少命名冲突
缺点:
1)依赖一个唯一全局的变量作为程序的全局符号。
2)没有办法存在多个版本程序或者类库在相同的页面中运行,因为它们都需要相同的全局符号,比如:Benjamin
3)长的带点的名称去输入
4)访问长的作用域链会影响性能