如何在不破坏 localStorage 类型的情况下存储和获取对象?
Posted
技术标签:
【中文标题】如何在不破坏 localStorage 类型的情况下存储和获取对象?【英文标题】:How to store and get an object without destroying the type in localStorage? 【发布时间】:2016-03-09 02:43:51 【问题描述】:我正在使用 TypeScript 开发一个 AngularJS 项目。
person
是 Person
类的对象。我需要将person
对象存储在localStorage
中并使用其类型检索它。
【问题讨论】:
【参考方案1】:虽然 Martin 的答案适用于没有方法的类。对于有方法的类,你可以试试这个:
let personFromStorage = JSON.parse(localStorage.getItem('person')) as Person;
let person = new Person('');
Object.assign(person , personFromStorage);
【讨论】:
【参考方案2】:window.localStorage 只能是字符串 store。您可以使用 JSON 序列化您的对象并将其取回。
class Person
constructor(public name:string)
let person = new Person('Peter');
localStorage.setItem('person', JSON.stringify(person));
let personFromStorage = JSON.parse(localStorage.getItem('person')) as Person;
console.log(
person: person,
personFromStorage: personFromStorage
);
【讨论】:
让我们continue this discussion in chat. 据我了解,调用 JSON.Stringify 你会丢失你的方法,所以将它们从会话中拉出来然后尝试调用一个方法,你会得到“不是一个函数”。当我试图将我的所有方法移动到我的模型中时,我遇到了这个问题,就像我在其他语言中所做的那样,只是意识到我无法将带有方法的“对象”保存为字符串以外的任何东西。如果有人有一个(简单的)解决方案,我很想知道。以上是关于如何在不破坏 localStorage 类型的情况下存储和获取对象?的主要内容,如果未能解决你的问题,请参考以下文章
应该打字吗?如果不是,如何在不破坏用户的情况下在 npm install 上触发类型安装?
如何在不删除旧文档的情况下将 XMLDocument 附加到 LocalStorage