我有带有自定义方法的 JS 对象作为原型(prototype)(例如 Foo.prototype.myAwesomeMethod
)。如果我将我的对象加载到 localStorage
中并稍后获取它,我将失去这些方法。
var foo = new Foo()
console.log(foo.myAwesomeMethod()) // WIN
localStorage.setItem('foo', foo)
foo = localStorage.getItem('foo')
console.log(foo.myAwesomeMethod()) // FAIL...
是否可以将对象的原型(prototype)保存在 localStorage
中?如果不是,如何正确地重新实例化该类?
最佳答案
你可以试试这个
function Foo() {
this.bar = 1;
}
Foo.prototype.myAwesomeMethod = function () {
return "And the winner is " + this.bar;
}
var foo;
window.onload = function () {
foo = new Foo();
foo.bar = 3;
console.log(foo.myAwesomeMethod()); // "And the winner is 3"
var test = JSON.stringify(foo); //localStorage.setItem('foo', foo);
foo = JSON.parse(test); // = localStorage.getItem('foo');
foo.__proto__ = new Foo(); // <--------------
console.log(foo.myAwesomeMethod()); // "And the winner is 3"
});
编辑: 我以前的代码未经测试,没有工作,这是工作代码
关于javascript - 我可以将对象原型(prototype)保存在本地存储中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30777814/