JavaScript 및/또는 Google v8 엔진에 대한 지속성 프레임 워크는 무엇입니까?JavaScript/Google v8의 지속성 프레임 워크
개체 (예 : 함수 포함)의 전체 그래프를 저장 (직렬화)하고 나중에 다시로드하려고합니다. JSON은 함수 저장을 허용하지 않고 트리 같은 구조 만 허용합니다 (즉, 동일한 객체를 참조하는 두 객체가 없음).
내 프로그램의 사용자가 자바 스크립트로 사용자 정의 할 수 있기를 원하기 때문에 일반적으로 (즉, 내 프로그램에 v8을 삽입하는 자바 스크립트 코드를 알지 못해서) 그렇게 할 수 있어야합니다. 하지만 내 프로그램의 상태 (사용자 정의 상태 포함)를 저장하고 나중에 다시로드해야합니다. 따라서 JavaScript 엔진의 상태를 저장해야합니다.
편집 :
예 :
한다고 가정 우리는 다음과 같은 코드가 있습니다
var obj = { a: 4, b: function (x) { return x + this.a; } }
// ...
if (...) { obj.a = 5; }
// ...
if (...) { var c = 1; obj.b = function (x) { return x + this.a + c; } }
// ...
// now I want to serialize obj
그런 다음에 (프로그램의 로직에 대한 메타 정보없이) 가능하다 obj
을 직렬화 한 다음 나중에 직렬화하기 전과 마찬가지로 역 직렬화 후에도 obj.b (2)
이 동일한 결과를 제공하도록 직렬화를 해제 하시겠습니까?
두 번째 편집 : 클로저에 유의하십시오.
왜 기능을 유지해야하는지 이해할 수 없습니까? 객체 원형 상속으로부터 함수 (가정)를 복원 할 수 있기 때문에. –
귀하의 질문에 완전히 명확하지 않습니다. 그럼에도 불구하고 나는 예제를 통해 나의 질문을 설명하려고 노력할 것이다. – JohnB
왜 모든 자바 스크립트 코드를 저장하고 eval로 복원해야합니까? (서버에서 돌아 오는 것처럼)? 또는'toString()'을 사용하여 각 함수를 역 직렬화하십시오. 다시 eval은 피할 수 없습니다. –