我想在本地缓存来自远程数据库的数据,以便在我的javascript应用程序中使用它。我不需要任何过激行为,如对本地数据的SQL请求,所以我决定以下列方式将数据库记录存储在对象数组中:
<script type="text/javascript">
var json0 = '{"1" : {"fname": "fname1", "sname": "sname1"}, "2" : {"fname": "fname2", "sname": "sname2"}}';
var json1 = '{"2" : {"data": "11/05/2014", "time": "11:30:18", "person": "data0[1]"}, "6" : {"data": "24/06/2014", "time": "16:11:05", "person": "data0[2]"}, "8" : {"data": "11/10/2014", "time": "12:15:27", "person": "data0[1]"}}';
var data0 = JSON.parse(json0);
var data1 = JSON.parse(json1, function (k, v) {
try {
return eval(v);
} catch (e) {
return v;
}
});
console.log(data1);
</script>
问题是关于内存使用情况。如果数组 data1 中的对象将存储对属性“ person ”中 data0 的对象的引用,或者它们将存储这些对象的副本对象
答案 0 :(得分:1)
作为示例的缩减版本显示,data0将通过引用存储。
var tt = {f1: 'aa', f2: 'bb'}
var rr = eval('tt');
console.log(rr.f1); // 'aa'
rr.f1 = 'cc';
console.log(tt.f1); // 'cc'
但使用eval(..)
是不好的方法:Why is using the JavaScript eval function a bad idea?。正如杰夫所说,使用本地存储。