Javascript 使用JSON.stringify保存对象时出现问题

Javascript 使用JSON.stringify保存对象时出现问题,javascript,jquery,json,local-storage,Javascript,Jquery,Json,Local Storage,使用isue获取JSON来字符串化整个对象布局。它当前仅字符串化第一个对象层级。如果我选择第二个级别,并且只将其严格化,它就会起作用。但是,当我尝试整个对象时,它会删除任何子级别的属性。这是一个来自构造函数的片段,用于创建表实例 var doesTableNameExist, dataBase = { tables: {} }, _dataBaseInstance, _tableInstance = { Ta

使用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));    

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

你能用小提琴再现这个吗?我试过了,但是我有问题,因为你的代码缺少结构。是的,给我一点时间。事实上,我不得不做太多的废话来处理这个实例。我想知道它是否引起了问题,因为它是类或实例的实例,而不是普通数组/对象。因此,我甚至尝试采用“this”并使用$.extend创建一个复制“this”实例的对象,然后将该表字符串化,但结果仍然相同。这对我来说很奇怪。我认为用JSON进行字符串化应该贯彻整个对象模型。在我开发的公司里,我们经常在应用程序中使用它,我们可以很好地处理多个级别的对象。所以,想知道为什么JSON.stringify对这个对象不是很好。。。。lol:(好吧,如果它不仅仅是一个普通对象,那很可能就是你遇到问题的原因。json只能代表一个普通对象/数组。。