Je souhaite conserver un objet de classe dans HTML5 localStorage. La classe contient des méthodes dont j'ai également besoin pour persister, mais l'analyse de l'objet localStorage révèle que l'objet n'est pas le même.L'analyse des objets de classe ES6 à partir de localStorage n'inclut pas les fonctions de classe
class ExcitingMath {
constructor(firstNumber, secondNumber) {
this._firstNumber = firstNumber;
this._secondNumber = secondNumber;
}
add() {
return this._firstNumber + this._secondNumber;
}
subtract() {
return this._firstNumber - this._secondNumber;
}
}
const eMath = new ExcitingMath(2, 4);
Connexion eMath
dans la console affiche l'objet de classe avec ses propriétés et méthodes: l'objet et de localStorage
, il ne
Cependant, quand je localStorage.setItem("math", JSON.stringify(eMath));
et JSON.parse(localStorage.getItem("math"));
comprend plus la constructeur ou méthodes.
Comment puis-je conserver l'instance de classe d'origine avec localStorage?
Étant donné la signature mehod de 'static fromJSON (json)', ne faites que passer le texte. Ensuite, dans la méthode, faites quelque chose comme 'return Object.assign (nouveau ExcitingMath(), JSON.parse (texte))'. Voir [* Object.assign *] (http://www.ecma-international.org/ecma-262/7.0/index.html#sec-object.assign) pour les propriétés. Ce serait donc 'ExcitingMath.fromJSON (texte)'. ;-). – RobG