在Javascript中,我目前正在使用localStorage
。因为不可能放入物体,所以我JSON.stringify
之前就是它们。
我正在存储整个游戏状态,而且一些子对象有方法。
使用JSON.parse
读取它们时,方法已经消失 - 这绝对有意义。将对象(包括浏览器中的方法)存储起来是愚蠢的。
将方法“重新附加”到之前的对象的最佳方法是什么,以便对象的行为方式与以前相同?
这是一个好方法吗
savedObj.prototype = MyClass.prototype;
我错过了什么吗?
答案 0 :(得分:1)
也许你想做这样的事情?
的Javascript
function MyClass(state) {
if (typeof state === 'string') {
this.state = JSON.parse(state);
} else {
this.state = {};
}
this.appendChild = function (element) {
element.appendChild(document.createTextNode(this.toJSON()));
}
}
MyClass.prototype = {
log: function () {
console.log(this.toJSON());
return this;
},
set: function (key, value) {
this.state[key] = value;
return this;
},
toJSON: function () {
return JSON.stringify(this.state);
}
};
var myClass1 = new MyClass();
myClass1.set('somekey', true);
myClass1.log();
localStorage.mySave = myClass1.toJSON();
var myClass2 = new MyClass(localStorage.mySave);
myClass2.log();
myClass2.appendChild(document.body);
上