我已经看到很多关于类似问题的问题,但我没有完全回答我的问题。
我的问题是我需要存储一个对象的整个实例,这意味着除了他的字段之外,我还需要它的相关方法。
我的代码:
存储对象:
$.cookie(key, JSON.stringify(value), { expires: expire });
检索对象:
var value = $.cookie(key);
if (value === null || value === undefined) {
return value = "";
}
return JSON.parse(value);
我从cookies中获取的对象有自己的字段,但是对象在存储之前没有我附加的方法。
正如你们/女士们能够理解我试图使用的对象一样,我提供了以下小提琴:https://jsfiddle.net/5hhgtnxh/
答案 0 :(得分:2)
如果没有一些黑客攻击,你根本无法将方法或功能保存到cookie或本地存储,JSON.stringify
将省略只保留数据的函数的键。这是否需要保存方法?他们已经在代码中了。您可以将对象拆分为数据和方法,仅将数据保存到cookie / localstorage。
顺便说一下,由于JSON不适用于Javascript,但是为了在不同系统或组件之间传递数据,它只是不允许函数作为值。有关详细的格式规范,请参阅http://json.org/。
非常简单的例子:
var CustomObject = function (data) {
var data = data;
this.getX = function () {
return data.x;
};
this.setX = function (x) {
data.x = x;
};
this.getData = function () {
return data;
};
};
var o = new CustomObject({});
o.setX(42);
$.cookie('myObj', JSON.stringify(o.getData()));
//later, let's initialize obj from cookie
var custData = $.cookie('myObj');
var o2 = new CustomObject(custData);