HTML5のlocalStorageにクラスオブジェクトを永続化したい。クラスには、永続化する必要のあるメソッドも含まれていますが、localStorageオブジェクトを解析すると、オブジェクトが同じでないことがわかります。それはプロパティとメソッドだとコンソールでlocalStorageからES6クラスオブジェクトを解析する際にクラス関数が含まれない
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);
ログeMath
は、クラスのオブジェクトを表示しません:
しかし、localStorage
へとからI localStorage.setItem("math", JSON.stringify(eMath));
とJSON.parse(localStorage.getItem("math"));
オブジェクト、それはもはや含まれている場合コンストラクタまたはメソッド。
にはどうすればいいのlocalStorageと元のクラスのインスタンスを永続化することができますか?
静的fromJSON(json)のmehodシグネチャが与えられた場合、テキストを単に渡すことを検討してください。次に、このメソッドで 'return Object.assign(new ExcitingMath()、JSON.parse(text))'のようにします。プロパティについては、[* Object.assign *](http://www.ecma-international.org/ecma-262/7.0/index.html#sec-object.assign)を参照してください。したがって、それは 'ExcitingMath.fromJSON(text)'になります。 ;-)。 – RobG