javascript / jQuery在cookie中存储对象并检索

时间:2015-09-04 13:58:35

标签: javascript jquery cookies

我已经看到很多关于类似问题的问题,但我没有完全回答我的问题。

我的问题是我需要存储一个对象的整个实例,这意味着除了他的字段之外,我还需要它的相关方法。

我的代码:

存储对象

$.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/

1 个答案:

答案 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);