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

javascript/jQuery storing object in cookie and retrieve

本文关键字:存储 对象 检索 cookie jQuery javascript      更新时间:2023-09-26

我看过很多和我类似的问题,但没有完全回答我的问题。

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

我代码:

存储对象:

$.cookie(key, JSON.stringify(value), { expires: expire });

检索对象:

var value = $.cookie(key); if (value === null || value === undefined) { return value = ""; } return JSON.parse(value);

我从cookie中获得的对象有它们的字段,但是对象没有我在存储之前附加的方法。

只是让你的家伙/女士们可以理解什么对象我试图工作,我提供了以下提琴:https://jsfiddle.net/5hhgtnxh/

如果没有一些hack,你根本无法将方法或函数保存到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);