亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

indexedDB:“_proto_”在數據庫對象中做什么?

indexedDB:“_proto_”在數據庫對象中做什么?

慕雪6442864 2022-12-22 14:33:12
對象在 indexedDB 中的存儲方式是否發生了變化,至少在 Firefox 中是這樣?我現在注意到在開發人員工具存儲選項卡中出現了“_proto_”。直到我在我的程序中觀察到我無法弄清楚的奇怪行為之前,我并沒有多想它。我認為對象在被寫入數據庫之前被克隆,這樣,無論它們是如何創建的,它們都是獨立的。例如,在第一次創建數據庫時,添加了一些映射對象;并且,由于多個對象具有完全相同的布局/結構,因此將重復使用對單個對象的引用,如下所示。加載頁面時,映射數據被讀入 RAM 并用于管理數據庫鍵的分配。除非我真的很困惑,否則 prop_3 到 prop_7 似乎在稍后重新加載頁面時從數據庫中提取時保留了公共引用,這樣如果 prop_3 中的一個屬性被更新,相同的屬性也會在 prop_3 到 prop_7 中更新。這是它應該工作的方式嗎?我希望 prop_3 到 prop_7 在寫入數據庫和從數據庫讀取之后不再共享公共引用。如果這是準確的,對象可以以不保留這些類型的共享引用的方式寫入數據庫嗎?當然,我意識到可以不使用對 repeated_object 的引用來對它們進行不同的分配;事實上,這為我解決了具體問題。謝謝你。repeated_object = { ...property : value... };os.add( { 'prop_1' : 1,           'prop_2' : 2,          'prop_3' : repeated_object,           'prop_4' : repeated_object,          'prop_5' : repeated_object,          'prop_6' : repeated_object,          'prop_7' : repeated_object  } );
查看完整描述

1 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

對未寫入數據庫的對象的引用如何序列化?當從數據庫中檢索該示例對象時,最后五個屬性仍被視為對同一單個對象的引用。

是的,這是預期的。IndexedDB不使用類似的東西JSON.stringify(value),如果它被多次引用,就會多次序列化一個對象。相反,它使用結構化克隆,它不僅支持序列化更多類型,還支持循環或共享引用。

這是 Firefox 的新功能嗎?

不,這應該在所有瀏覽器中保持一致。

它完成了_proto_嗎?

一點都不。這與它無關。結構化序列化不保留原型對象(內置對象除外)。


查看完整回答
反對 回復 2022-12-22
  • 1 回答
  • 0 關注
  • 82 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號