這個問題在這里已經有了答案: chrome.storage 可以保存“高級”物件,如日期或地圖嗎? (1 個回答) 6 天前關閉。
好吧,我之前已經問過另一個問題,但這是個糟糕的問題,因為我誤解了一些事情。我已經暴露了我的個人問題,但是有人要求提供一個可重現的案例,這確實不容易設定。
可重現的案例確實有同樣的問題。因此,現在可重現的示例作業了,這只是一個小的 chrome 擴展,一切都按預期作業。這是它的.rar:Chrome Storage Anomaly(我猜如果需要,請隨意編輯它以找到更多答案)
您加載擴展程式等,并沒有了解它是如何作業的。獲得 4 個按鈕后,首先在類/陣列中加載一些資料,并顯示一些函式輸出。
第一個左側的第二個顯示一些console.log 有用的資料(但如果您不使用第一個按鈕,它將不起作用,因為否則他讀取了不存在的資料)。
第三和第四(在兩個第一之下)非常簡單,因為寫在上面你基本上從 chrome.storage.local SET 和 GET 具有 Garage 類的變數。在你用第一個按鈕創建資料后,用第三個按鈕設定它,用第四個按鈕獲取它,你會看到第一個按鈕不起作用,因為方法/功能無法識別,其次是console.logs 按鈕,這兩個類消失了,現在是簡單的物件。
因此,原始問題已經有了答案,似乎是的,它確實會洗掉您放入其中的物件的原始類別。所以我真正的問題是:我們如何避免這種情況?或者我犯了什么錯誤最終導致它這樣做?
uj5u.com熱心網友回復:
我們可以在這里set
閱讀接受作為專案的內容
一個物件,它提供每個鍵/值對來更新存盤。存盤中的任何其他鍵/值對都不會受到影響。諸如數字之類的原始值將按預期進行序列化。具有“object”和“function”型別的值通常會序列化為 {},但 Array(按預期序列化)、Date 和 Regex(使用它們的 String 表示進行序列化)除外。
它沒有直接說明,但考慮到函式和嵌套鍵被洗掉,它不會保留物件的類。
在 JavaScript 中序列化原型鏈很困難,我懷疑任何庫都可以做到這一點。
每次從該存盤中獲取資料時,都必須創建一個新的類物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/504551.html
標籤:javascript 班级 目的 谷歌浏览器扩展 谷歌浏览器存储