美文网首页
命名空间v1.0.0

命名空间v1.0.0

作者: 一点金光 | 来源:发表于2019-07-28 00:37 被阅读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')
    //....
    

    相关文章

      网友评论

          本文标题:命名空间v1.0.0

          本文链接:https://www.haomeiwen.com/subject/hnnyrctx.html