Javascript 使用localStorage保存方法
我不知道如何存储包含方法的对象。如果我使用 setItem'inventory',JSON.stringifyhero.inventory 而且清单中的一些ItemsObject有方法,我只获取带有的属性 hero.inventory=JSON.parselocalStorage.getItem'inventory' 您如何存储和检索对象及其所有属性和方法而不出现循环错误?简短回答:您不能 详细回答: 只能在localStorage中存储字符串。这就是为什么首先要使用JSON.stringify和JSON.parse 请参阅以了解规避此问题的方法 或者,您的对象可以包含一个构造函数/方法,如果给定所有非方法属性,该构造函数/方法将使用所有方法重构完整的对象 非常基本的例子:Javascript 使用localStorage保存方法,javascript,json,html,Javascript,Json,Html,我不知道如何存储包含方法的对象。如果我使用 setItem'inventory',JSON.stringifyhero.inventory 而且清单中的一些ItemsObject有方法,我只获取带有的属性 hero.inventory=JSON.parselocalStorage.getItem'inventory' 您如何存储和检索对象及其所有属性和方法而不出现循环错误?简短回答:您不能 详细回答: 只能在localStorage中存储字符串。这就是为什么首先要使用JSON.stringify
function Countdown( start ) {
this.start = start;
this.ticksCounted = 0;
}
Countdown.prototype.tick = function(){
this.start -= 1;
this.ticksCounted += 1;
}
Countdown.parse = function( param ) {
// get a basic object
var result = new Countdown();
// append all values
for( var key in param ) {
if( param.hasOwnProperty( key ) ) {
result[ key ] = param[ key ];
}
}
// return result
return result;
}
以及相应的反序列化:
var c1 = new Countdown( 10 );
c1.tick();
console.log( c1 );
var s = JSON.stringify( c1 );
console.log( s );
var c2 = Countdown.parse( JSON.parse( s ) );
console.log( c2 );
你应该只存储值,而不是方法。非常感谢,尽管有一个bug。应该是c1.parse JSON.parse s@user3065579在倒计时的定义中更可能出现错误。解析方法不应位于原型上。我认为将它附加到构造函数本身比它的原型更干净。