js json添加 删除 修改类代码

 代码如下 复制代码

(function(){
    /**
     * 构架函数
     * @param {string} name 标识名, 如: user, info等
     */
    function Class(name){
        var self = this;
        self._name = name;
    }

    /**
     * 获取数据
     * @param {string|undefined} key 要获取数据的键名,如果没有该键名则为空对象
     * @return {object} 最终对象
     */
    Class.prototype.get = function(key){

        var json = this._get_data(),
            i,
            arr,
            len;

        if(key){
            arr = key.split(".");
            len = arr.length;

            for(i = 0; i<len; i++){//遍历出 user.name.value的空间, 然后让这个空间的属性xl=数据
                json = json[arr[i]] = json[arr[i]] || {};
            }
        }

        return json;
    }

    /**
     * 写入数据
     * @param {string} key  要写入的键名, 支持用 . 分隔, 如果没有则会创建为对象
     * @param {data} data 数据包
     * @return {object}     当前实例
     */
    Class.prototype.set = function(key, data){
        var self = this,
            json = self._get_data() || {},//获取最新的, 以保证每次更新

            i,
            arr = key.split("."),
            len = arr.length,
            temp;

        if(len === 1){// set("user", value)
            json[key] = data;
        } else if(len === 2){//set("user.name", value)
            json[arr[0]] = json[arr[0]] || {};//注册第一个空间
            json[arr[0]][arr[1]] = data;
        } else {//深度空间 set("user.name.value.xl", value)
            temp = json;//临时来一个吧, 用原的遍历会挂
            for(i = 0; i<len-1; i++){//遍历出 user.name.value的空间, 然后让这个空间的属性xl=数据
                temp = temp[arr[i]] = temp[arr[i]] || {};
            }
            temp[arr[i]] = data;
        }

        self._set_data(stringify(json));//写入到本地

        return self;
    }

    /**
     * 移除数据
     * @param  {string} key 键名
     * @return {object}     当前实例
     */
    Class.prototype.remove = function(key){
        return this.set(key, undefined);
    }

    Class.prototype._set_data = function(value){
        localStorage.setItem(this._name, value);
    }

    Class.prototype._get_data = function(){
        return parse(localStorage.getItem(this._name));
    }

    Class.prototype._remove_data = function(){
        localStorage.removeItem(this._name);
    }

    /**
     * 解析string->json
     * @param  {string} str 要解析的字符串,必须为 '{"xl":1}'
     * @return {object}     解析后的对象
     */
    function parse(str){
        return JSON.parse(str);
    }

    /**
     * 解析json=>string
     * @param  {object} json 要解析的对象
     * @return {string}      解析后的字符串
     */
    function stringify(json){
        return JSON.stringify(json);
    }

 

    var demo1 = new Class("demo1");
    demo1.set("msc.user.data.userId", 1).set("msc.xl", "xieliang");
    console.log(demo1.get());
    console.log(demo1.get("msc.user"));
    console.log(demo1.get("xxx.xxx"));//由于没有xxx空间则为空{}
    console.log(demo1.get());
    console.log(demo1.remove("msc.user").get("msc"));
    console.log(demo1.remove("xl.xl.x").get());//其实这里这样感觉不太帅, 由于没有xl.xl却选用了set创建了...
}());

时间: 2024-10-30 00:59:00

js json添加 删除 修改类代码的相关文章

利用js动态添加删除table行的示例代码

 本篇文章主要是对利用js动态添加删除table行的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 如下所示:    代码如下: //动态添加行 function addRow(){    var table = document.getElementById("tableID");    var newRow = table.insertRow(); //创建新行    var newCell1 = newRow.insertCell(); //创建新单元格    

基于HTML+CSS+JS实现增加删除修改tab导航特效代码_jquery

先给大家展示下效果图,如果大家感觉还不错,请参考实现代码哦! HTML: <div class="container iden_top"> <ul> <li> <p class='iden_add_name'>应用标识1</p> <span class="iden_top_button"></span> <div class="iden_top_dete"&

用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等_MsSql

用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200) 2.删除字段 ALTER TABLE table_NAME DROP COLUMN column_NAME 3.修改字段类型 ALTER TABLE table_name ALTER COLUMN column_name new_data_type 4.sp_rename 改名 更改当前数据库中用户创建对象(如表.列或用户定义数据类型)的名称. 语法 sp_rename

求解java中的 二维数组添加 删除 修改 查询 操作

问题描述 二维数组添加删除修改查询操作如何实现?不用传统数组用List()做一个通讯录用字符串输入的方式编写一个简单的通讯录.此通讯录由多条记录构成.每条记录包括一个联系人的姓名.性别.电话.通信地址,并具有查询.增加.修改.删除等功能,且每执行一次功能操作后,可以选择用类似以下的格式,输出通讯录的所有信息记录: 解决方案 解决方案二:這不是二維數組.用Map來做更合適,先定義一個個人資料的類,然後放到Map時用ID當KEY.解决方案三:我用List做

js+dom增加删除表格行代码

js+dom增加删除表格行代码 <table id="tbl" width="300" name="tbl" border="1">   <tr>     <td width="160">content</td>     <td>name</td>     <td><input type="button&qu

js动态添加删除,后台取数据(示例代码)_javascript技巧

环境描述:就像你一般在论坛上发表文章,可能带附件,附件的数量是你手动添加删除的!!/*************************************************************************** 添加审批表单模板************************************************************************/// 增长的索引var itemIndex = 1000;// 数量var counter = 0;/

Yii的数据添加 删除 修改与查询示例

对于一个Model Post 有如下的4中查询方法,返回对象或者对象数组.  代码如下 复制代码  // find the first row satisfying the specified condition $post=Post::model()->find($condition,$params); // find the row with the specified primary key $post=Post::model()->findByPk($postID,$condition

利用js动态添加删除table行的示例代码_javascript技巧

如下所示: 复制代码 代码如下: //动态添加行function addRow(){   var table = document.getElementById("tableID");   var newRow = table.insertRow(); //创建新行   var newCell1 = newRow.insertCell(); //创建新单元格   newCell.innerHTML = "": //单元格内的内容   newCell.setAttri

js左右选择添加删除内容菜单代码

选定一项或多项然后点击添加或移除(按住shift或ctrl可以多选),或在选择项上双击进行添加和移除. 北京上海山东安徽重庆福建甘肃广东广西贵州海南河北黑龙江河南湖北湖南内蒙古江苏江西吉林辽宁宁夏青海山西陕西四川天津西藏新疆云南浙江香港澳门台湾其他 值: