-1

chrome.storage.sync에 Timer 개체를 저장하고 있습니다. 나는 Timer 객체를 검색하고 그 방법 중 하나 countdown()를 호출 할 때, 방법은 더 이상 존재하지 않습니다 :검색시 chrome.storage.sync에 저장된 객체의 메서드가 함수가 아닌 이유는 무엇입니까?

let clock = new Timer(1); 
    let key = "myKey"; 
    chrome.storage.sync.set({[key]: clock}); 
    chrome.storage.sync.get(key, function(items){ 
    items[key].countdown(); 
    }); 

크롬 DevTools로 말한다 : "응답에 오류가 storage.get하기 : 형식 오류 : 항목 [키]. 카운트 다운은 기능이 아닙니다. "

+0

왜 이것을'storage.sync'에 저장하고 있습니까? 동일한 프로필에 연결된 서로 다른 컴퓨터에서 동기화 할 것으로 예상합니까? 그것은 분명히 그것이 적절한 곳으로 보이지 않습니다. – Makyen

답변

0

chrome.storage에 함수를 직접 저장할 수 없습니다.

StorageArea.set()에 대한 문서는 매우 명시 적이다 강조 광산] :

Primitive values such as numbers will serialize as expected. Values with a typeof "object" and "function" will typically serialize to {}, with the exception of Array (serializes as expected), Date, and Regex (serialize using their String representation).

이 (잘 프리미티브로 구성 Object를 직렬화 할 JSON) JSON의 부분 집합이 될 것으로 보인다. 그러나 완전한 JSON 구현이라 할지라도 기능을 저장하지는 못합니다. "JSON은 함수, 정규 표현식, 날짜 등과 같은 더 복잡한 데이터 유형을 기본적으로 나타내지 않습니다."