Javascript 暂时删除对象的toJSON fn成员
我试图将变量存储在我的移动网站上的localStorage中,这样如果用户离开,它们的状态不会丢失。为了做到这一点,我将所有重要数据作为JSON存储在localStorage中。但是,数据的某些部分是解析对象(主干模型),并具有Javascript 暂时删除对象的toJSON fn成员,javascript,json,backbone.js,local-storage,parse-platform,Javascript,Json,Backbone.js,Local Storage,Parse Platform,我试图将变量存储在我的移动网站上的localStorage中,这样如果用户离开,它们的状态不会丢失。为了做到这一点,我将所有重要数据作为JSON存储在localStorage中。但是,数据的某些部分是解析对象(主干模型),并具有toJSON函数。为了不引人注目地存储数据,我需要删除toJSON,以便对象按原样存储,然后重新附加它。但是,我的代码不起作用: var toJSON = null; if(obj && ob
toJSON
函数。为了不引人注目地存储数据,我需要删除toJSON
,以便对象按原样存储,然后重新附加它。但是,我的代码不起作用:
var toJSON = null;
if(obj && obj.toJSON) {
toJSON = obj.toJSON;
delete obj.toJSON;
}
window.localStorage[localStorageIndex] = JSON.stringify(obj);
if(toJSON)
obj.toJSON = toJSON;
你知道为什么吗?
谢谢。试一试:
obj.toJSON = undefined;
window.localStorage[localStorageIndex] = JSON.stringify(obj);
delete obj.toJSON;
这会暂时将原型的
toJSON
隐藏为undefined
,导致stringify()
跳过它。我学会了不使用本地存储来存储重对象…你确定toJSON
是对象的一种方法,而不仅仅是对象原型的方法吗?这真的很奇怪,对象原型的属性不应该被字符串化。我不确定,但它可能是对象原型的方法。它失败时出现未定义不是函数错误。我还尝试将toJSON设置为空函数,function(){}
,但也失败了。我认为字符串化和解析对象是低效和不切实际的,所以我将存储指向所需数据的指针。