使用JSON.stringify发出保留对象

时间:2013-10-31 15:31:32

标签: javascript jquery json local-storage

让isue获取JSON以对整个对象布局进行字符串化。它目前只对第一个对象级别进行字符串化。如果我采用第二级,并且只进行字符串化,则可行。但是,当我尝试整个对象时,它会丢弃任何次级属性。这是构造函数的一个片段,用于创建表实例。

var doesTableNameExist,
        dataBase = {
            tables: {}
        },
    _dataBaseInstance,
    _tableInstance = {
        TableName: "",
        Columns: "",
        Rows: "",
        RowCount: ""
    }

    this.TableName = tableName;
    this.Columns = columns;
    this.Rows = rows;
    this.RowCount = 0;

    _dataBaseInstance = localStorage.getItem($config.dataBaseName);
    if (!!_dataBaseInstance)
    {
        dataBase = JSON.parse(_dataBaseInstance);
    }

    doesTableNameExist = dataBase.tables[tableName];

    if (!!doesTableNameExist && !forceNew)
    {
        errorMsg = String.jDBaseFormat("That table name is already used! You cannot have two tables with the name {0}", this.TableName);
        console.error(errorMsg);
    }
    else
    {
        //create the object table and store it after running JSON against it.
        _tableInstance = this;
        dataBase.tables[tableName] = _tableInstance;
        localStorage.setItem($config.dataBaseName, JSON.stringify(dataBase));

        console.log(String.jDBaseFormat("Storing new table '{0}'.", this.TableName));
    }

非常感谢任何帮助。在stringify过程之后,对象的样子是:

对象---->表:[];不是对象 - >表:---->表格实例。

这是运行时的对象。

enter image description here

所以我知道对象是正确的。但是JSON会丢弃对象属性“tables”中的任何内容。不明白为什么。

我也是这样试过的:

是的。我在想。它是构造函数表函数的一个实例。我试过这个,也没有去。我认为它会使它成为通用对象,而不是附加实例。

_tableInstance = $.extend({}, this);
        dataBase.tables[tableName] = _tableInstance;
        localStorage.setItem($config.dataBaseName, JSON.stringify(dataBase));    

所以我想知道我是否应该只返回一个对象,而不是使用表的“new”构造函数,这样我存储的是常规对象而不是构造函数的实例?我会尝试一下。谢谢你的帮助。

0 个答案:

没有答案