如何在不破坏 localStorage 类型的情况下存储和获取对象?

Posted

技术标签:

【中文标题】如何在不破坏 localStorage 类型的情况下存储和获取对象?【英文标题】:How to store and get an object without destroying the type in localStorage? 【发布时间】:2016-03-09 02:43:51 【问题描述】:

我正在使用 TypeScript 开发一个 AngularJS 项目。

personPerson 类的对象。我需要将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

如何在不破坏遗留代码的情况下增加函数的返回值?

我如何(url)在不破坏 mime 的情况下重写?

如何在不破坏 Subversion 历史的情况下重命名 Java 包?

如何在不破坏布局“流程”的情况下使用 css 旋转元素?