localStorage
에서 객체를 저장하고 검색하는 데 JSON.stringify
및 JSON.parse
을 사용하고 있습니다. 그러나 JSON.stringify
은 개체의 인스턴스 함수를 제거합니다. 따라서 JSON.parse
이후에는 더 이상 myObject.doSomething()
으로 전화 할 수 없습니다. 이 기능을 수동으로 부착 할 수 있다는 것을 알고 있습니다 : myObject.doSomething = MyClass.prototype.myFunction
,하지만이 작업이 웹 앱에서 여러 번 반복 될 경우 문제가 될 것입니다. 사람들은 JavaScript로 이것을 어떻게 정상적으로합니까?localstorage에서 검색된 객체 함수를 다시 작성하십시오.
0
A
답변
2
JSON은 분명히 단순한 형식화 된 변수 만 저장하는 함수 자체를 보유하지 않습니다. 패스에서이 문제를 해결 한 방법은 클래스의 복원 방법이며 JSON의 데이터로 해당 메소드를 호출하여 클래스에 속한 데이터로 클래스를 다시 채우는 것입니다.
나는이 코드베이스에서 VO (Value Object) 디자인 패턴을 광범위하게 사용했으며, 저에게는 꽤 잘 맞았습니다. 그러나주의를 기울여야 할 한마디로, Ie7/Ie8은 윈도우를 통해 통신을 시도 할 경우이 접근법과 매우 친숙하지 않습니다. 내가 기억하기로는 IE7이 일부 속성에 올바른 "typeof"를 반환하지 않는다고 생각하기 때문에 교차 창 통신이 포함되었을 때 복원 할 때 많은 어려움을 겪었습니다.
+0
그래서 JS에서 이것을 할 우아한 방법이 없다고 생각하십니까? 다른 사람이 다른 제안을 내놓기 전에 며칠을 더 기다려야 답변을 표시 할 수 있습니다 ... – pckben
관련 문제
- 1. 포인터 증분/감소를 사용하여 함수를 다시 작성하십시오.
- 2. Factory Boy의 객체 팩토리에서 @property를 다시 작성하십시오.
- 3. 함수를 받아들이는 함수를 작성하십시오.
- 4. Haskell에서 concatMap의 함수를 작성하십시오.
- 5. Newton의 방법을 사용하여 Excel RATE 함수를 다시 작성하십시오.
- 6. 블록을 사용하기 위해 간단한 루비 함수를 다시 작성하십시오.
- 7. 함수를 여러 번 호출하지 못하도록 쿼리를 다시 작성하십시오.
- 8. 수동으로 생성 된 중첩 JSON을 PHP 함수를 사용하여 다시 작성하십시오.
- 9. CouchDB에서 url을 다시 작성하십시오.
- 10. zend_search_lucene 색인을 다시 작성하십시오.
- 11. RsaCryptoserviceProvider를 다시 작성하십시오.
- 12. PHP 코드를 다시 작성하십시오.
- 13. 검색 쿼리를 다시 작성하십시오.
- 14. iirf url을 다시 작성하십시오.
- 15. .php 확장자를 다시 작성하십시오
- 16. 코어 데이터베이스를 다시 작성하십시오.
- 17. 도메인 htaccess를 다시 작성하십시오.
- 18. backbone.sync를 다시 작성하십시오.
- 19. .htaccess에있는 URL을 다시 작성하십시오.
- 20. schema_migrations 테이블을 다시 작성하십시오.
- 21. 리디렉션없이 htaccess를 다시 작성하십시오.
- 22. 위로부터 NSWindow를 다시 작성하십시오.
- 23. 폴더에 변수를 다시 작성하십시오.
- 24. URL을 htaccess로 다시 작성하십시오.
- 25. 부스트 : 변형을 반환하는 함수를 작성하십시오.
- 26. 간단한 C++ 함수를 객관적으로 작성하십시오.
- 27. Python : 런타임에 함수를 동적으로 작성하십시오.
- 28. 다시 같은 asp.net 응용 프로그램을 다시 작성하십시오
- 29. LocalStorage에서 사용자 정의 JavaScript 객체 저장 및 사용자 정의 객체 유형으로 객체 검색
- 30. 캐슬 activerecord SQL을 다시 작성하십시오
'localStorage'는 객체를 값으로 유지할 수있게하며, 키는 문자열이어야합니다. 문자열로 저장하려는 특별한 이유가 있습니까? –
유일한 이유는이 사이트의 어딘가에서 가장 최근의 브라우저가 localStorage에 대한 문자열만을 지원한다는 것을 읽었습니다. 사양에 따라 객체를 지원해야한다고 하더군요. 사실입니까? – pckben
Chrome을 사용하여 방금 테스트 한 결과 localStorage에서 가져온 개체는'[object Object]'입니다. 유형을 복원하려면 어떻게해야합니까? 인스턴스 메서드와 속성을 호출 해 보았지만 정의되지 않았습니다. – pckben