命名空间v1.0.0

2019-07-28  本文已影响0人  一点金光

命名空间的创建和使用。可用于配置、状态...等的管理。这是一种风格,但不唯一。

/**
 * 命名空间
 * @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')
//....
上一篇 下一篇

猜你喜欢

热点阅读