javascript - 我可以将对象原型(prototype)保存在本地存储中吗?

标签 javascript prototype

我有带有自定义方法的 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/

相关文章:

javascript - 是否也应避免通过符号扩展内置 Javascript 原型(prototype)?

javascript - 如何使用 Object.assign() 从其他对象引用基础对象属性

javascript - 如何为游戏对象使用抽象构造函数?

javascript - 将 ownProperty 对象添加到 Object 的原型(prototype)时出错

javascript - 图片库/缩放幻灯片

javascript - 在全日历中单击时更改事件的背景颜色

javascript - 如何使用 html、css 和 js 文件构建可在任何 Android 手机上运行的 APK 文件

继承 T 的 typescript 泛型函数

JavaScript 动画 : Handling Complex Animations That Use Callbacks & Loop

javascript - JSON 序列化一个 DOM 元素