存储JS对象以及原型,实例类型等

时间:2015-04-15 16:28:20

标签: javascript json object save archive

是否有可能基本上归档JS对象的状态,超出了从它生成JSON字符串时序列化的状态?

考虑在游戏中保存状态,并在单独的场合将其重新加载到window

2 个答案:

答案 0 :(得分:2)

最简单的方法是序列化对象,然后从序列化数据中重新创建它:

function AnObject(number, string) {
  this.number = number;
  this.string = string;
  this.add = function(){number++};
}
var initialObject = new AnObject(1, 'a');
var serialized = JSON.stringify(initalObject);
//Gives {"number": 1, "string": "a"}

var parsed = JSON.parse(serialized);
var recreated = new AnObject(parsed.number, parsed.string);
//Is the same as initialObject

您可以根据需要序列化功能:

function serializeFunction(f) {
  var string = f.toString();
  return string.substring(string.indexOf('{')+1, string.length - 1);
}
var func = function(){alert(1)};

答案 1 :(得分:1)

json string不能包含函数,构造函数......我认为你需要做的是定义一个类,在那里你可以找到你需要的所有方法,然后你可以从你得到的json数据中实例化你的对象。这是一个简单的例子:

function Stats (options) {

     this.a = options.a;
     this.b = options.b;
     this.toString = function () { return this.a + ' ' + this.b; };
     this.toJSON = function () { return { a : this.a , b : this.b }; };
     // Methods

     return this;
}

在这种情况下,每当你获得你的json数据时,你只需要实例化你的对象

var stats = new Stats (JSON);
console.log(stats.toString());