HTML5 localStorage에서 클래스 객체를 유지하려고합니다. 클래스에는 또한 유지해야하는 메소드가 포함되어 있지만 localStorage 객체를 구문 분석하면 객체가 동일하지 않다는 것을 알 수 있습니다. 콘솔에서 eMath
로깅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);
은 그것으로 클래스 객체의 표시 속성과 메소드 :
, 나는 localStorage.setItem("math", JSON.stringify(eMath));
및 JSON.parse(localStorage.getItem("math"));
및 localStorage
에서 개체, 그것은 더 이상을 포함 생성자 또는 메소드.
어떻게 로컬 스토리지와 원래의 클래스 인스턴스를 지속 할 수 있습니까?
'static 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