命名空间的创建和使用。可用于配置、状态...等的管理。这是一种风格,但不唯一。
/**
* 命名空间
* @class
* @classdesc
*/
Class MyNameSpace {
constructor(name,data){
this.__data = data || {}
this.__name = name || "MYAPP"
}
/**
* 设置数据
*/
setData(data){
this.__data = data;
}
/**
* 返回指定的命名空间,如果命名空间不存在则创建命名空间。
* @method
* @param {string} nsPath 空间路径
* @param {string} delemiter 分割符号 默认为.
* @return {Object} 最后一个命名空间创建的对象的引用
*/
conf(nsPath,delemiter){
let parts = nsPath.split(delemiter||"."),
parent = this.__data,
i=0,
l=0;
if(parts[0]===this.__name){
parts = parts.slice(1);
}
for(i=0,l=parts.length; i<l;i++){
if(typeof parent[parts[i]] === "undefined"){
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
}
}
//basic usage:
let ns = new NameSpace('state',{})
//set ns
ns.conf('state.user.id') = "xx"
//get ns
ns.conf('state.user.id') //"xx"
//set data
ns.setData({})
//set name
ns.setName('ymc')
//....
网友评论