대부분의 최신 브라우저 (Chrome, Firefox, IE 9 이상, Safari, Opera)에서 작동해야하는 오프라인 HTML5 응용 프로그램을 개발하려고합니다. Safari에서는 IndexedDB가 지원되지 않고 WebSQL은 더 이상 사용되지 않으므로 localStorage를 사용하여 사용자 생성 JavaScript 객체 및 JSON.stringify()
/JSON.parse()
을 저장하여 객체를 넣거나 꺼내기로 결정했습니다. 그러나 JSON.stringify()
은 메소드를 처리하지 않는다는 것을 알게되었습니다. 다음은 간단한 방법으로 예시 목적 : I는 (이후 로컬 스토리지에 넣어) 오브젝트를 캐릭터 라인 화하면json.stringify가 객체 메소드를 처리하지 않습니다.
var myObject = {};
myObject.foo = 'bar';
myObject.someFunction = function() {/*code in this function*/}
이 유지되도록 모든 myObject.foo
하지 myObject.someFunction()
이다.
//put object into localStorage
localStorage.setItem('myObject',JSON.stringify(myObject));
//pull it out of localStorage and set it to myObject
myObject = localStorage.getItem('myObject');
//undefined!
myObject.someFunction
많은 사람들이 이미이 제한 사항/기능/원하는 것을 무엇이든 알고있을 것입니다. 해결 방법은 (myObject = new objectConstructor()
) 메서드를 사용하여 개체를 만들고 localStorage에서 개체 속성을 추출한 다음 내가 만든 새 개체에 할당하는 것입니다. 이것이 둥근 방식이라고 생각합니다. 그러나 JavaScript 세계에 익숙하지 않습니다. 그래서 이것이 어떻게 해결 되었습니까. 그래서 여기에 나의 궁금한 점이 있습니다. 전체 객체 (속성 + 메소드)가 localStorage에 포함되기를 바랍니다. 어떻게해야합니까? 아마 더 나은 알고리즘을, 또는 내가 알지 못하는 또 다른 JSON 메서드를 보여줄 수 있다면, 크게 감사하겠습니다.
기능 JSON에 존재하지 않습니다. 참조 : http://json.org. –
그게 사양을 읽은 후에 생각한 것이지만, 그 방법을 저장할 수있는 방법이 있습니까? 아니면 내 방식대로하는거야? – user2649759
[JSON.stringify function]의 가능한 복제본 (http://stackoverflow.com/questions/6754919/json-stringify-function) – Bergi