让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过程之后,对象的样子是:
对象---->表:[];不是对象 - >表:---->表格实例。
这是运行时的对象。
所以我知道对象是正确的。但是JSON会丢弃对象属性“tables”中的任何内容。不明白为什么。
我也是这样试过的:
是的。我在想。它是构造函数表函数的一个实例。我试过这个,也没有去。我认为它会使它成为通用对象,而不是附加实例。
_tableInstance = $.extend({}, this);
dataBase.tables[tableName] = _tableInstance;
localStorage.setItem($config.dataBaseName, JSON.stringify(dataBase));
所以我想知道我是否应该只返回一个对象,而不是使用表的“new”构造函数,这样我存储的是常规对象而不是构造函数的实例?我会尝试一下。谢谢你的帮助。