使用以下JSON:
var myObj = {name: 'my obj', does: 'nothing'};
var myObjArr = [myObj, myObj, myObj];
将myObjArr存储到本地存储时,myObj JSON会被使用3次,占用存储空间的3倍,即:
"[{"name":"my obj","does":"nothing"},{"name":"my obj","does":"nothing"},{"name":"my obj","does":"nothing"}]"
显然,这会带来可扩展性问题。任何人都可以推荐最佳解决方案到目前为止,我不得不求助于使用ID,即关系数据库。
var objects = {0: {name: 'my obj', does: 'nothing'}};
var myObjArr = [{obj: 0}, {obj: 0}, {obj: 0}];
更新 - 问题是当所有数据最终存储为键/值字符串时,如何在本地存储中表示此层次结构。诉诸关系数据库概念似乎是老派。
答案 0 :(得分:1)
更合适的技术IndexedDB将被用作对象存储,但许多浏览器还不是supported。
编辑:您需要浏览将对象复制到IndexedDB时使用的structured clone algorithm文档 - 看起来每个记录都维护引用,但adding多个记录不会导致每个记录引用在JavaScript内存空间中共享的对象。